2

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

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

在 URL中没有其他view-出现之前,这非常有效。但不幸的是,如果 URL 像这样http://example.com/view-abc-view-def.html,它将以 404 结尾。

所以我尝试了

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

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

4

2 回答 2

4

用这个改变你现有的规则:

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

一旦您验证它正在工作,请从 更改为R=302R=301

于 2013-04-23T17:21:37.860 回答
1

您可以先消除所有 internal -view-,然后进行实际的重定向

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

当一切按预期工作时,您可以更改RR=301.

永远不要在启用的情况下进行测试,有关详细信息301,请参阅此答案 提示调试 .htaccess 重写规则

于 2013-04-23T19:05:02.943 回答