我需要在我的网站上设置几个重定向。我的htaccess文件目前是:
RewriteEngine on
RedirectMatch 301 ^/browse/ http://www.mysite.co.uk/designs
Redirect /designs http://www.mysite.co.uk/our-designs
重定向#1 - 我需要将以前为www.mysite.co.uk/browse/....
的所有旧网址重定向到www.mysite.co.uk/designs/....
(设计文件夹替换浏览文件夹)
一个例子是:
http://www.mysite.co.uk/browse/home/kitchens
也需要去:
http://www.mysite.co.uk/designs/home/kitchens
重定向#2 - 现在第二次重定向导致问题。我需要重定向页面:
http://www.mysite.co.uk/designs
为:
http://www.mysite.co.uk/our-designs
所以我使用:
Redirect /designs http://www.mysite.co.uk/our-designs
这会将/designs
页面正确地重定向到our-designs
页面,但现在也会更改任何带有/designs/
的网址,如上所示
http://www.mysite.co.uk/designs/home/kitchens
应该保持不变,但它会变为:
http://www.mysite.co.uk/our-designs/home/kitchens
这给了我一个找不到的页面
答案 0 :(得分:1)
使用以下规则:
RewriteEngine on
RewriteRule ^browse/(.+)$ /designs/$1 [R=301,L]
RewriteRule ^designs/?$ /our-designs [R=301,L]
如果主机不同,您可以将http://www.mysite.co.uk
作为主机重写URL。
答案 1 :(得分:0)
更改规则的顺序并添加查询参数以防止进一步重定向:
RewriteEngine On
RewriteCond %{QUERY_STRING} !^_noredir(&|$) [NC]
RewriteRule ^designs/(.*)$ /our-designs/$1 [R=301,L,NC,NE]
RewriteRule ^browse/(.*)$ /designs/$1?_noredir [R=301,L,NE,NC,QSA]