Apache vhost_alias和NameVirtualHost可以共存在同一个服务器/ IP中吗?

我有一个开发服务器,为PHP程序员build立和runnig一段时间了。 系统是使用默认的Apache软件包的Debian系统:

# apache2 -v Server version: Apache/2.2.9 (Debian) Server built: Dec 11 2010 18:58:55 

我已经build立了大约30个基于名称的VirtualHosts,每个项目和每个开发者都有一个。 我用脚本进行configuration,但是现在我必须添加大约15个新的项目,所有这些项目都有标准的目录结构,所以我想,我将使用mod_vhost_alias

我有我的configuration类似于这样的:

 NameVirtualHost *:80 #Default vhost <VirtualHost *:80> DocumentRoot /var/www/404 ServerName dev.example.com ErrorLog /var/log/apache2/404.error_log TransferLog /var/log/apache2/404.access_log <Directory "/var/www/404"> allow from all Options Indexes Includes AllowOverride All </Directory> </VirtualHost> #this entry is repeated many times #with different server names, document roots # and other differences, bu basics stay the same <VirtualHost *:80> DocumentRoot /var/www/crm ServerName crm.dev.example.com ErrorLog /var/log/apache2/crm.error_log TransferLog /var/log/apache2/crm.access_log <Directory "/var/www/crm"> allow from all Options Indexes Includes AllowOverride All </Directory> </VirtualHost> # I added Vhost_alias virtaul host today, at the end of the config <VirtualHost *:80> # This is for pages similar to some-page.pl.web.example.com UseCanonicalName Off ServerAlias *.web.dev.example.com VirtualDocumentRoot /var/www/web/%-4+/cur ErrorLog /var/log/apache2/%-4+.error_log TransferLog /var/log/apache2/%-4+.access_log <Directory /var/www/%-4+> allow from all Options Indexes Includes AllowOverride All </Directory> </VirtualHost> 

结果是,当我连接到http://my-page.com.web.dev.example.com时,我从/ var / www / 404目录中获取默认的vhost。 目录/var/www/web/my-page.com/存在,并包含my-page.com真实网页的副本。

我究竟做错了什么? 我需要单独的IP地址“标准”NameVirtualHost和vhost_alias? 我还应该检查什么?

是的,您可以在相同的configuration中使用NameVirtualHostmod_vhost_alias 。 改变你的mod_vhost_alias条目,像这样:

 <IfModule mod_vhost_alias.c> <VirtualHost *:80> ServerAlias *.web.dev.example.com VirtualDocumentRoot /var/www/web/%-4+/cur ErrorLog /var/log/apache2/%-4+.error_log TransferLog /var/log/apache2/%-4+.access_log <Directory /var/www/%-4+> allow from all Options Indexes Includes AllowOverride All </Directory> </VirtualHost> </IfModule> 

把这个条目直接放在httpd.conf (在RHEL系统的/etc/httpd/conf/httpd.conf文件中)或者在/etc/apache2/conf-enabled/为Ubuntu。

编辑:我博客进一步的信息 。

我以前为通配符子域设置了类似的VirtualDocumentRoot。 能够在某个人的主目录中创build一个目录非常有用 – 通常通过Samba共享他们的目录,这样他们就可以从开发者的桌面上使用,并且至less为开发和testing创build一个新的网站。

至于你的问题,我只是把他们到不同的IP地址,没有默认的虚拟主机。