.htaccess htaccess-重定向未按预期工作?

.htaccess htaccess-重定向未按预期工作?,.htaccess,mod-rewrite,redirect,url-redirection,.htaccess,Mod Rewrite,Redirect,Url Redirection,我需要在我的网站上设置几个重定向。我的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/…的旧URL重定向到www.mysite.co.uk/designs/…(designs文

我需要在我的网站上设置几个重定向。我的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/…
的旧URL重定向到
www.mysite.co.uk/designs/…
(designs文件夹取代了browse文件夹)

例如:

http://www.mysite.co.uk/browse/home/kitchens
我们也需要去:

http://www.mysite.co.uk/designs/home/kitchens
重定向#2-现在第二个重定向导致了问题。我只需要重定向页面:

http://www.mysite.co.uk/designs
致:

因此,我使用:

Redirect /designs http://www.mysite.co.uk/our-designs
这将正确地将
/designs
页面重定向到
我们的设计
页面,但现在也会根据上面的示例更改so中的
/designs/
的任何url

http://www.mysite.co.uk/designs/home/kitchens
应保持原样,但更改为:

http://www.mysite.co.uk/our-designs/home/kitchens

这将为我提供一个未找到的页面

更改规则的顺序,并添加一个查询参数以防止进一步重定向:

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]

使用以下规则:

RewriteEngine on
RewriteRule ^browse/(.+)$ /designs/$1 [R=301,L]
RewriteRule ^designs/?$ /our-designs [R=301,L]
您可以将
http://www.mysite.co.uk
如果主机不同,则作为主机重写URL

RewriteEngine on
RewriteRule ^browse/(.+)$ /designs/$1 [R=301,L]
RewriteRule ^designs/?$ /our-designs [R=301,L]