所有请求都指向一个虚拟主机

我刚刚安装了Apache 2.2,并试图在相同的服务器configuration上托pipe两个域。 我首先创build了一个虚拟主机a.com ),并debugging了我的configuration以使其正常工作。 当我尝试添加虚拟主机b.com并尝试访问它时,我所得到的只是a.com的正确页面。 两个虚拟主机都指向相同的静态IP地址。 服务器在VPS上运行CentOS。

/usr/local/apache2/conf/httpd.conf具有基本的configuration,并且部分包含在下面,但是我有httpd.conf Include第二个文件, clients.confIncludes每个站点的configuration,这是在不同网站的主目录。 (每个网站都有自己的帐户,目录webscriptsdataconfig 。)

httpd.conf中:

 Listen 80 NameVirtualHost [ip] # [...] Include /usr/local/apache2/conf/clients.conf 

clients.conf:

 Include /home/[a]/conf/apache/vhost.conf Include /home/[b]/conf/apache/vhost.conf 

/home/[a]/conf/apache/vhost.conf

 <VirtualHost [ip]> ServerName www.[a].com ServerAlias [a].com ServerAdmin [me]@[a].com DocumentRoot /home/[a]/web/home ErrorDocument 404 "http://www.[a].com/error/?404" <Directory /home/[a]/web/home> Options -Indexes FollowSymLinks # Don't allow any .htaccess files AllowOverride None # Allow everyone to access Order allow,deny </Directory> </VirtualHost> 

/home/[b]/config/apache/vhost.conf

 <VirtualHost [ip]> ServerName www.[b].com ServerAlias [b].com ServerAdmin admin@[b].com DocumentRoot /home/[b]/web/home ErrorDocument 404 "http://www.[b].com/error/?/404/" <Directory /home/[b]/web/home> Options -Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost [ip]> ServerName beta.[b].com DocumentRoot /home/[b]/web/home <Directory /home/[b]/web/home> Options -Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> 

(对不起所有的代码,但我不知道需要多less)

可能有人在我的代码中看到一个问题? 我认为它看起来几乎与VirtualHost示例 (第一个)相同,除了我在这里扩展了“其他指令”并且使用了完整的IP地址,而不是*通配符,这在下面的“注释:”这个例子。

编辑

正如评论所build议的,我尝试了apachectl -S ,它给出了以下输出:

 # /usr/local/apache2/bin/apachectl -S VirtualHost configuration: [ip] is a NameVirtualHost default server www.[a].com (/home/[a]/conf/apache/vhost.conf:5) port 80 namevhost www.[a].com (/home/[a]/conf/apache/vhost.conf:5) Syntax OK 

[b].com应该显示在这里?

[b].com没有显示出来表明[b]没有被加载或者没有被识别(通常是后者)。 导致这种情况的最常见原因是作为NameVirtualHost的一部分列出的IP与<VirtualHost>列出的IP之间的不匹配。 这是为什么使用*:80通常是可取的原因之一。

无论如何,有一个简单的testing,看看文件是否被加载:只需在[b].com的configuration文件中包含一个无效的configuration命令,看看是否httpd -t (或service httpd configtest ,因为你是在CentOS上)报告错误。

我试图解决我的问题,同时尝试BMDan的build议。 我打开了clients.conf ,应该已经(并保存为)包括来自客户端ab文件。 相反,它只是包含a 。 我不知道为什么它不包含正确的数据,但我的Apache安装现在正常工作。

我感谢所有在这个问题上帮助过我的人,如果问题是我犯的错误,我很抱歉。