运行 CentOS 6、Apache。
我的 httpd.conf 中有以下内容:
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName domain1.example
ServerAlias www.domain1.example
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/domain2
ServerName domain2.example
ServerAlias www.domain2.example
</VirtualHost>
每当我访问domain2.example
(或www.domain2.example
)时,都会看到domain1.example
。
编辑:更多信息来自httpd.conf
Listen 80
#NameVirtualHost *:80
我已经检查过的内容:
- Apache 已重新启动
- DNS
domain1.example
并domain2.example
指向同一 IP
我错过了什么?
解决方案:
正如 Patrick 指出的那样,在 Apache 2.2 中,NameVirtualHost
使用多个VirtualHost
s 时是必需的。这里的解决方案是取消注释以下行httpd.conf
:
#NameVirtualHost *:80
到:
NameVirtualHost *:80
答案1
由于您只使用 Apache 2.2,因此您绝对需要使用该NameVirtualHost
指令以便让 Apache 知道您有多个使用不同名称但具有相同 IP 的网站。
该指令在 Apache 2.3 中已弃用,如以下文档所述:httpd.apache.org/docs/2.4/mod/core.html#namevirtualhost
在 2.3.11 之前,NameVirtualHost 需要指示服务器,特定 IP 地址和端口组合可用作基于名称的虚拟主机。在 2.3.11 及更高版本中,只要在多个虚拟主机中使用 IP 地址和端口组合,就会自动为该地址启用基于名称的虚拟托管。
对于您的版本,基于配置名称的虚拟主机的指南在这里: http://httpd.apache.org/docs/2.2/vhosts/name-based.html#using
答案2
看起来它与第一个虚拟主机匹配。
尝试这样的操作:
<VirtualHost *:80>
DocumentRoot /var/www/html/domain1
ServerName domain1.com
ServerAlias www.domain1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/domain2
ServerName domain2.com
ServerAlias www.domain2.com
</VirtualHost>