2

我正在寻找一种将所有旧域重定向到新域的方法,

似乎它们在基本级别被重定向,但是当涉及子类别或永久链接时,根本没有重定向。

    Options +FollowSymLinks 
    RewriteEngine on

    RewriteCond %{HTTP_HOST} (www\.)?mydomain1\.com$ [NC]
    RewriteCond %{HTTP_HOST} (www\.)?mydomain2\.com$ [NC]
    RewriteCond %{HTTP_HOST} (www\.)?mydomain3\.com$ [NC]
    RewriteCond %{HTTP_HOST} (www\.)?mydomain4\.com$ [NC]
    RewriteCond %{HTTP_HOST} (www\.)?mydomain5\.com$ [NC]
    RewriteCond %{HTTP_HOST} (www\.)?mydomain6\.com$ [NC]

    RewriteRule ^(.*) http://www.mydomain7.com/$1 [QSA,L,R=301]

基本级别重定向很好:mydomain1.com/graph.php = > mydomain7.com

但即使在这个级别它也不能重定向到同一页面

更重要的是永久链接:

mydomain1.com/users/13/James => 无重定向

4

2 回答 2

8

最干净的解决方案是重定向任何不是 www.mydomain7.com 的域

RewriteCond %{HTTP_HOST} !^www\.mydomain7\.com$ [NC]
RewriteRule ^(.*) http://www.mydomain7.com/$1 [L,R=301]
于 2012-05-17T21:06:59.703 回答
2

默认情况下,所有 RewriteCond 都被 ANDed 在一起,因此您的规则将不起作用,因为 value%{HTTP_HOST}不能同时是所有这些域。

要么按照 Gerben 的建议使用否定,要么像这样重写你的代码:

RewriteCond %{HTTP_HOST} ^(www\.)?(mydomain1|mydomain2|mydomain3|mydomain4|mydomain5|mydomain6)\.com$ [NC]
RewriteRule ^ http://www.mydomain7.com%{REQUEST_URI} [L,R=301]
于 2012-05-17T21:29:57.843 回答