这个问题一直困扰着我,我一直没能弄清楚为什么 Apache 会这样做,我总是求助于 mod_vhost 插件来解决这个问题。
基本上,我在启用站点的(Ubuntu服务器)中有2个虚拟主机,它们的内容:
<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。
我是否忽略了一些非常明显的事情?我真的不明白为什么会这样。
谢谢
答案1
您缺少 NameVirtualhost;但是:
- 请勿使用 VirtualHost *;
VirtualHost *:80
而是使用。
正确的做法如下:
NameVirtualHost *:80
<VirtualHost *:80>
Servername vhosta
</VirtualHost>
<VirtualHost *:80>
Servername vhostb
</VirtualHost>
答案2
在定义虚拟主机之前,您需要类似以下内容:
NameVirtualHost *:80
您正在执行基于名称的虚拟主机。请参阅此处的文档:
http://httpd.apache.org/docs/2.2/mod/core.html#namevirtualhost