如何使用.htaccess删除部分URL

时间:2014-05-09 07:29:41

标签: apache .htaccess magento mod-rewrite

RewriteRule我遇到了一些问题。我将旧店搬到新店,一些产品的路径将会改变。单一产品的旧路径是:

www.example.com/page/product1.html
www.example.com/page/sub-page/product1.html

每条产品(新店铺)均可在该路径上找到:

www.example.com/product1.html

这是最好的(在我看来)重定向所有产品的最简单方法。如何削减以前链接的一部分?我的规则如下:

RewriteRule ^page/(.*)$ /$1 [R=301,L]
RewriteRule ^page/sub-page/(.*)$ /$1 [R=301,L]

但每次当我使用旧路径www.example.com/page/sub-page/product1.html进入页面时,重定向后的链接看起来像这样:www.example.com/sub-page/product1.html并且www.example.com/product1.html

2 个答案:

答案 0 :(得分:1)

按照以下规则更改规则的顺序:

RewriteRule ^page/sub-page/(.+)$ /$1 [R=301,L]

RewriteRule ^page/(.+)$ /$1 [R=301,L]

编辑:或者将其合并为一条规则:

RewriteRule ^page/(?:.+?/)?([^/]+)$ /$1 [R=301,L]

答案 1 :(得分:0)

您必须像这样切换规则的位置:

RewriteRule ^page/sub-page/(.*)$ /$1 [R=301,L]
RewriteRule ^page/(.*)$ /$1 [R=301,L]

重写模块只是查看规则列表并尝试逐个应用规则。你的第一条规则将匹配两者。