我正在寻找一种方法将所有旧域重定向到新域
它们似乎在基本级别重定向,但是当它出现子类别或perm链接时,根本没有重定向。
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
但即使在此级别,它也无法重定向到同一页面
更重要的是perm-links:
mydomain1.com/users/13/James =>没有重定向
答案 0 :(得分:8)
最干净的解决方案是重定向任何非www.mydomain7.com
的域名RewriteCond %{HTTP_HOST} !^www\.mydomain7\.com$ [NC]
RewriteRule ^(.*) http://www.mydomain7.com/$1 [L,R=301]
答案 1 :(得分:2)
默认情况下,所有RewriteCond都是AND,因此您的规则不起作用,因为%{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]