htaccess 301重定向多个域RewriteCond和RewriteRule

时间:2012-04-10 14:32:59

标签: .htaccess mod-rewrite redirect multiple-domains

我正在尝试将旧域的所有网页重定向到新域上有关该域的网页。

我使用下面代码的前3行构建了无数网站,将不是www.mydomain.co.uk的任何内容重定向到www.mydomain.co.uk。

在以下4行中我试图将olddomain.co.uk的所有页面重定向到我的新域名www.currentdomain.co.uk/page-about-olddomain

上的单个页面
RewriteCond   %{HTTPS} !=on
RewriteCond   %{HTTP_HOST}   !^www\.currentdomain\.co\.uk$   [NC]
RewriteRule   ^(.*)$   http://www.currentdomain.co.uk/$1  [R=301,L]

RewriteCond   %{HTTPS} !=on
RewriteCond   %{HTTP_HOST}   ^www\.olddomain\.co\.uk$   [NC]
RewriteCond   %{HTTP_HOST}   ^olddomain\.co\.uk$   [NC]
RewriteRule   ^(.*)$  http://www.currentdomain.co.uk/page-about-olddomain  [R=301,L]

我想要发生什么

我希望从上面的代码中看到, www.olddomain.co.uk/test-page 页面会重定向到 www.currentdomain.co.uk/page-约-OLDDOMAIN

究竟发生了什么

我实际看到的是 www.olddomain.co.uk/test-page 页面重定向到 www.currentdomain.co.uk/test-page 。< / p>

我认为这是两套RewriteConds之间的冲突

对此我提供的任何帮助都非常感谢,我确信还有其他人想要做类似的事情。

由于

2 个答案:

答案 0 :(得分:3)

规则顺序很重要。交换它们 - 将第一条规则(第1-3行)移到第二条下方。

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$ [NC]
RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$ [NC]
RewriteRule ^(.*)$  http://www.currentdomain.co.uk/page-about-olddomain [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\.currentdomain\.co\.uk$ [NC]
RewriteRule ^(.*)$ http://www.currentdomain.co.uk/$1 [R=301,L]

答案 1 :(得分:2)

由于 @LazyOne 并在第一次RewriteCond之后添加 [OR] 条件,我通过交换规则的顺序解决了问题使用www的

检查olddomain
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.olddomain\.co\.uk$   [NC,OR]
RewriteCond %{HTTP_HOST} ^olddomain\.co\.uk$   [NC]
RewriteRule ^(.*)$ http://www.currentdomain.co.uk/olddomain-page [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\.currentdomain\.co\.uk$   [NC]
RewriteRule ^(.*)$ http://www.currentdomain.co.uk/$1  [R=301,L]