默认 VirtualHost 重定向

默认 VirtualHost 重定向

我需要你们的帮助。

我有一台运行 Apache 2 的服务器,其中有多个绑定到不同域的虚拟主机。我希望默认虚拟主机(即每个未绑定到虚拟主机的地址)重定向到此域之一,将其命名为 maindomain.com。之前,我在默认虚拟主机配置中设置了到 maindomain.com 的重定向,然后一切正常

问题是现在我更改了系统的主机名(我不得不这么做!)到 maindomain.com。所以,如果我理解正确的话,现在 maindomain.com 隐式地是默认域(事实上我陷入了重定向循环问题)。

我通过将 maindomain.com 位置设置为默认虚拟主机解决了此问题。一切正常,但我没有重定向。例如,如果您访问 www.maindomain.com(或任何未与虚拟主机绑定的地址),您会看见正确的网站,但在地址栏中您仍然看到 www.maindomain.com 而不是 maindomain.com。

那么,我该如何修复这个问题以避免重定向循环?

  1. 是否可以禁用主机名像 Apache 中的默认 vhost 一样的行为?
  2. 或者,当有人使用其他地址连接时,如何在地址栏中显示 maindomain.com?

我希望你能帮助我,提前谢谢。

答案1

如您所知,如果请求的名称没有明确的VirtualHost,则 Apache 将使用默认值VirtualHost来处理请求。因此,您不会看到没有自己的 URL 的重定向,VirtualHost因为您更改了默认值重定向的那个仅提供内容的那个。

如果您知道要处理哪些域,则应该使用通配符来捕获意外的子域,例如:

<VirtualHost *:80>
    ServerName         *.maindomain.com
    ServerAlias        otherdomain.com *.otherdomain.com
    RedirectPermanent  /  http://maindomain.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName    maindomain.com
    ... rest of VirtualHost ...
</VirtualHost>

不过,我不确定这与你最初所拥有的有何不同。

相关内容