在Apache上正确设置虚拟主机?

我有一个问题搞清楚在Centos6服务器上的Apache2虚拟主机的正确configuration。 我安装了一个安装了apache2(httpd)的干净的Centos6安装,默认情况下定义了/ var / www /图标/ var / www / errors/ var / www / cgi-bin内容文件夹它们是在/etc/httpd/conf/httpd.conf中configuration的。

我configuration了2个域a.comb.com ,为此我创build了文档文件夹/var/www/a.com/var/www/b.com ,并在/etc/httpd/conf/httpd.conf我configuration了NameVirtualHost

NameVirtualHost *:80 

并为a.comb.com添加了相应的虚拟主机

 <VirtualHost *:80> ServerAdmin [email protected] ServerName a.com ServerAlias www.a.com DocumentRoot /var/www/a.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory "/var/www/a.com"> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> 

域名a.comb.com都工作正常,我可以访问他们有没有www子域,但我很困惑我该如何处理默认的httpdconfiguration和默认内容文件夹? 即使使用普通IP地址(请求指向a.com虚拟主机)调用服务器,我似乎也无法访问/ var / www / html中的默认站点。 我也尝试将服务器主机名configuration为c.com并设置

 ServerName c.com:80 

但是,即使对c.com的请求也被redirect到a.com虚拟主机。

我不需要由apache创build的默认内容文件夹,所以我应该删除/ var / www / html/ var / www /图标/ var / www / errors/ var / www / cgi-bin文件夹和相应的定义就在/etc/httpd/conf/httpd.conf

 DocumentRoot "/var/www/html" <Directory "/var/www/html" ... /> Alias /icons/ "/var/www/icons/" <Directory "/var/www/icons" ... /> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin" ... /> Alias /error/ "/var/www/error/" <Directory "/var/www/error" ... /> 

或者在同一台服务器上configuration虚拟主机时,如何configuration和访问默认主机?

当您使用基于名称的虚拟主机时,第一个<VirtualHost>将成为默认主机,它也将响应与其他虚拟主机的ServerNameServerAlias指令中声明的域名不匹配的所有请求。

从手册 :

主人走开
如果将虚拟主机添加到现有的Web服务器 ,则还必须为现有主机创build一个<VirtualHost>块。 此虚拟主机中包含的ServerName和DocumentRoot应与全局ServerName和DocumentRoot相同。 首先在configuration文件中列出这个虚拟主机,以便它作为默认主机。