apache2 中 NamedVirtualHost 的异常行为,一个 IP 对应两个网站

apache2 中 NamedVirtualHost 的异常行为,一个 IP 对应两个网站

我尝试使用 NamedVirtualHosts 设置一台服务器来处理两个网站。这是我第一次尝试这样做,而且我得到了非常异常行为。具体来说,对 www.example2.com 的请求指向 /home/stefan/example2,但http://example.com指向 /home/stefan/example1。

有人知道这里发生了什么事吗?

/etc/apache2/apache2.conf

...

NameVirtualHost *:80

<VirtualHost *:80>
   DocumentRoot /home/stefan/example1
   ServerName www.example1.com
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot /home/stefan/example2
   ServerName www.example2.com
</VirtualHost>

答案1

我猜您真正想说的是 www.example2.com 转到正确的地方,但 example2.com 转到 www.example1.com 网站。

您需要使用“ServerAlias”指令并在其中插入不带“www”的域。

在相应的部分中类似以下内容:

服务器别名 example1.com

服务器别名 example2.com

答案2

有什么问题?听起来它运行得很好。

您有一个用于 www.example2.com 的虚拟主机,它指向正确的位置。任何没有虚拟主机的主机名(如 example.com)都将转到第一个虚拟主机。

答案3

来自Apache2 文档-

由于 www.example.com 在配置文件中排在第一位,因此它具有最高优先级,可视为默认或主服务器。这意味着,如果收到的请求与指定的 ServerName 指令之一不匹配,则将由第一个 VirtualHost 提供服务。

因此,由于您没有为 example.com 定义 vhost,Apache 将使用默认 vhost。在您的例子中,这是 www.example1.com。

相关内容