Apache 永久重定向

Apache 永久重定向

我如何重定向同一台服务器上的两个域名。假设这个域名

http://www.game.com -> http://www.games.com
http://game.com -> http://www.games.com
http://games.com -> http://www.games.com (*this is not redirecting*)

所有域名都应重定向到该域名http://www.games.com

以下是当前的 htaccess 内容

RewriteCond %{HTTP_HOST} ^game.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.game.com$
RewriteRule ^/?$ "http\:\/\/www\.games\.com\/" [R=301,L]

RewriteCond %{HTTP_HOST} ^games.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.game.com$
RewriteRule ^/?$ "http\:\/\/www\.games\.com\/" [R=301,L]

答案1

当有更简单的方法可以完成相同任务时,每个人都喜欢使用 mod_rewrite。这需要使用 mod_alias。

<VirtualHost *:80>
  ServerName game.com
  ServerAlias www.game.com
  ServerAlias games.com
  Redirect permanent / http://www.games.com
</VirtualHost>
<VirtualHost *:80>
  ServerName www.games.com
  .
  .
  .
</VirtualHost>

答案2

mod_rewrite似乎有点过头了。如果您有权访问 vhost 配置,那么您可以通过Hosts在单个 vhost 中捕获并使用 来简化此过程RedirectMatch

<VirtualHost *:80>
    ServerName games.com
    ServerAlias game.com www.game.com

    RedirectMatch permanent .* http://www.games.com/
</VirtualHost>

答案3

最后的 RewriteCond 不是必需的——它是第一条规则中第二个条件的重复。

如果没有看到您的完整 Apache 配置,我无法肯定地说,但根据我的经验,此类问题的最常见原因是当您为其重写的 vhost 实际上没有覆盖主机名,并且一些其他 vhost 配置正在用于域。

相关内容