VirtualHost 忽略 ServerName 和 ServerAlias

use*_*440 1 redirect virtualhost apache-2.2

我试图将所有流量从 .se 重定向到 .com 但由于某种原因 VirtualHost 忽略了我定义的 ServerName 和 ServerAlias。

<VirtualHost *:80>
    ServerName www.example.se
    ServerAlias example.se
    Redirect 301 / https://www.example.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,即使 tld 不是 .se,所有流量也将通过 VirtualHost 重定向

我错过了什么吗?

And*_*w B 5

简短的回答:是的。

长答案:听起来这是您在配置文件中的第一个 VirtualHost,这使它成为主要的虚拟主机。这意味着您的其他虚拟主机不够具体,无法匹配流量,导致它们转而登陆此虚拟主机。

参考以下页面:http : //httpd.apache.org/docs/2.2/vhosts/name-based.html

特别是:

主要主持人离开

如果要将虚拟主机添加到现有 Web 服务器,则还必须为现有主机创建块。此虚拟主机中包含的 ServerName 和 DocumentRoot 应与全局 ServerName 和 DocumentRoot 相同。首先在配置文件中列出此虚拟主机,以便它充当默认主机。