1

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

我使用下面代码的前 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-about-olddomain

实际发生了什么

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

我相信这是两组 RewriteConds 之间的冲突

对此我有任何帮助,我将不胜感激,我相信还有其他人想做类似的事情。

谢谢

4

2 回答 2

3

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

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]
于 2012-04-10T15:05:41.673 回答
2

感谢@LazyOne ,我通过交换规则的顺序解决了这个问题,并在第一个检查带有 www 的旧域的 RewriteCond 之后添加了[OR]条件

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]
于 2012-04-11T08:24:16.267 回答