切换mod重写的URL

时间:2009-12-15 10:43:30

标签: php apache .htaccess mod-rewrite

我们在PHP网站中使用了一个mod重写的URL,这是我们正在使用的重写规则:

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

但是,不同系统的用户正在切换到我们的设置,并希望将所有旧页面301改为新的等效设置。因此,例如,此URL:

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

变为:

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

是否可以在单个重写规则或重写匹配(或类似)中执行此操作,我的初步想法是这样的:

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

3 个答案:

答案 0 :(得分:2)

修正了这个规则:

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

答案 1 :(得分:1)

这是一个mod_rewrite示例:

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

答案 2 :(得分:0)

你的例子正在以我所能看到的方式重定向到你想要的方式。

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