VirtualHosts与Apache不尊重ServerName

这一直困扰着我,我从来没有搞清楚为什么Apache这样做,我总是诉诸于mod_vhost插件来解决这个问题。

基本上,我有2个虚拟主机在启用网站(Ubuntu服务器),其内容:

<VirtualHost *> DocumentRoot "/var/www/vhosta.domain.com/" ServerName vhosta.domain.com <Directory "/var/www/vhosta.domain.com/"> allow from all Options +Indexes </Directory> </VirtualHost> 

 <VirtualHost *> DocumentRoot "/var/www/vhostb.domain.com/" ServerName vhostb.domain.com <Directory "/var/www/vhostb.domain.com/"> allow from all Options +Indexes </Directory> </VirtualHost> 

现在逻辑上这两个可以单独访问,但是,似乎所有的请求到我的服务器,无论我定义什么样的虚拟主机,这将是vhosta.domain.com。

我错过了一些非常明显的东西吗? 我真的不知道为什么这样做..

谢谢

你缺less一个NameVirtualhost; 然而:

  • 不要使用VirtualHost *; 使用VirtualHost *:80代替。

以下是正确的方法:

 NameVirtualHost *:80 <VirtualHost *:80> Servername vhosta </VirtualHost> <VirtualHost *:80> Servername vhostb </VirtualHost> 

在你的虚拟主机定义之前,你需要像这样的东西:

 NameVirtualHost *:80 

你正在做基于名字的虚拟主机。 请参阅这里的文档:

http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost