.htaccess替换单词并重定向

.htaccess替换单词并重定向,.htaccess,redirect,replace,.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中没有出现其他出现的视图-之前,此功能将一直正常工作。但不幸的是,如果URL类似于http://example.com/view-abc-view-def.html它将以404结尾 所以我试过了 Rewrit

我需要重定向
http://example.com/view-abc-def.html
http://example.com/view/abc-def.html
。为了做到这一点,我使用

RewriteRule ^(.*)view-(.*)$ /$1view/$2 [R=301,L]
在URL中没有出现其他出现的视图-之前,此功能将一直正常工作。但不幸的是,如果URL类似于
http://example.com/view-abc-view-def.html
它将以404结尾

所以我试过了

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

但在这种情况下,它不会改变URL中的任何内容。我做错了什么?

使用以下规则更改现有规则:

RewriteRule (^|.*?/)view-(.*)$ /$1view/$2 [R=302,L,NC]

一旦您验证它是否正常工作,就从
R=302
更改为
R=301

您可以首先消除所有内部
-view-
并执行实际重定向

RewriteRule ^(.*)-view-(.*)$ $1-$2 [L]
RewriteRule ^(.*)/view-(.*)$ /$1/view/$2 [R,L]
当一切正常时,您可以将
R
更改为
R=301

切勿在启用
301
的情况下进行测试,请参阅此答案 详情请参阅