我尝试使用 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。