2009-12-15 81 views
1

我们正在利用我们的PHP网站内的国防部重写URL,这是我们所使用的重写规则:开关国防部重写URL

RewriteRule ^category/([^.]+)/([0-9]+)/([^.]+)/([0-9]+) categories.php?c_id=$2&filters=$3&_p=$4&area=category&areaname=$1 

但是,不同系统的用户切换到我们的设置,并希望将他们所有的旧页面重新编号为301。因此,举例来说,这个网址:

http://domain.com/categories/clothing/5/1 

变为:

http://domain.com/category/clothing/5/0-0-0-0/1 

是否有可能做到这一点在一个重写规则或改写匹配(或类似),我INTIAL的想法是这样的将工作:

RewriteRule /categories/(.*)/(.*)/1 /category/$1/$2/0-0-0-0-0-0-0-0/1 [R=301,L] 

它不,有什么想法?

与RedirectMatch也试过这也行不通:

RedirectMatch /categories/(.*)/(.*)/1 http://domain.com/category/$1/$2/0-0-0-0-0-0-0-0/1 
+1

是在'重写规则/类别的斜线...'故意? – jensgram 2009-12-15 11:44:36

+0

哈哈,很好! – robjmills 2009-12-15 17:31:58

回答

2

固定自己使用这个规则:

RedirectMatch 301 /categories/(.*)/(.*)/(.*) http://domain.com/category/$1/$2/0-0-0-0-0-0-0-0/$3 
0

你的例子是重定向到从我可以看到你想要的方式相反的方式。

/category/abc/def/0-0-0-0-0-0-0-0/1/categories/abc/def/1

+0

只是注意到我粘他们错了方式,仍然没有工作,虽然 – robjmills 2009-12-15 10:58:52

+0

切换他们上面 – robjmills 2009-12-15 11:11:05

1

这里有一个mod_rewrite的例子:

RewriteRule ^categories/([^/]+/[^/]+)/([^/]+)$ /category/$1/0-0-0-0/$2 [L,R=301]