我正在尝试将旧域的所有网页重定向到新域上有关该域的网页。
我使用下面代码的前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之间的冲突
对此我提供的任何帮助都非常感谢,我确信还有其他人想要做类似的事情。
由于
答案 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的
检查olddomainRewriteCond %{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]