2011-05-11 87 views
7

我已经看到了如何重定向到www要求非www请求Apache的rewrite guide的伎俩:重定向多个域名/网址为一,规范域名

RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^/(.*)   http://www.example.com/$1 [L,R] 

会被重定向请求所有的example.com www.example.com。

但是,如何添加我希望来自example1.com,www.example1.com,example2.com,www.example2.com等的请求重定向到www.example.com?

编辑:

这里的解决方案:

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule ^/?(.*) http://www.example.com/$1 [L,R,NE] 

稍有不同的重写规则,并添加 'RewriteEngine叙述上'

+2

默认情况下,'R'重写标记默认为302响应代码。如果你想要一个301代替(我认为你在大多数情况下),你可以这样做:'RewriteRule^/?(。*)http://www.example.com/$1 [L,R = 301, NE]' – 2012-05-09 21:37:28

+0

奇怪,这对我不起作用或者失败'服务apache2重新启动' – 2013-07-04 03:20:18

回答

4

但我怎么加入,我想从例1的请求.com,www.example1.com,example2.com,www.example2.com等重定向到www.example.com?

你已经做到了。您的重写规则指出“如果HTTP_HOST不是www.example.com(并且不是空白),则重定向到www.example.com”。

只要您的服务器设置为将其他域指向您将www.example.com托管在同一目录中,则您已完成设置。

+0

这就是我想的,但事实证明,我必须先添加'RewriteEngine On'。 – bafromca 2011-05-11 15:57:34