我需要将http://example.com/view-abc-def.html
重定向到http://example.com/view/abc-def.html
。为了做到这一点,我用过,
RewriteRule ^(.*)view-(.*)$ /$1view/$2 [R=301,L]
这在URL中没有其他视图 - 出现之前是完美的。但遗憾的是,如果网址与http://example.com/view-abc-view-def.html
类似,则会以404结尾。
所以我试过
RewriteRule ^(.*)/view-(.*)$ /$1view/$2 [R=301,L]
但在这种情况下,它不会改变URL中的任何内容。我做错了什么?
答案 0 :(得分:4)
使用以下内容更改现有规则:
RewriteRule (^|.*?/)view-(.*)$ /$1view/$2 [R=302,L,NC]
在您确认其有效后,从R=302
更改为R=301
。
答案 1 :(得分:1)
您可以先删除所有内部-view-
,然后执行实际重定向
RewriteRule ^(.*)-view-(.*)$ $1-$2 [L]
RewriteRule ^(.*)/view-(.*)$ /$1/view/$2 [R,L]
如果一切正常,您可以将R
更改为R=301
。
301
的情况下从不测试,请参阅此答案 Tips for debugging .htaccess rewrite rules 详情。