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
答案 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]
重写模块只是查看规则列表并尝试逐个应用规则。你的第一条规则将匹配两者。