我如何重定向同一台服务器上的两个域名。假设这个域名
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 配置正在用于域。