.htaccess替换一个单词并重定向

时间:2013-04-23 16:40:20

标签: .htaccess redirect replace

我需要将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中的任何内容。我做错了什么?

2 个答案:

答案 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 详情。