.htaccess 重定向太多。设置htaccess以重定向

.htaccess 重定向太多。设置htaccess以重定向,.htaccess,.htaccess,我把一个旧网站移到了一个新的cms,有些内容有新系统上找不到的链接 例如,在旧系统中,有一个名为 在新的一个,我不需要这些ID在最后。因此,我想重定向用户到 直接的 我在htaccess文件中写了以下内容: RewriteRule ^(.*newsletter)(.*) $1 [L,R=301] 这给了我一个“太男人重定向”错误。 有人能指出我犯的错误吗 我计划使用正则表达式捕获包含“新闻稿”名称的所有链接,并删除url的其余部分以重定向用户。感谢您的帮助。使用(.*newsletter)(

我把一个旧网站移到了一个新的cms,有些内容有新系统上找不到的链接

例如,在旧系统中,有一个名为 在新的一个,我不需要这些ID在最后。因此,我想重定向用户到 直接的

我在htaccess文件中写了以下内容:

RewriteRule  ^(.*newsletter)(.*) $1 [L,R=301]
这给了我一个“太男人重定向”错误。 有人能指出我犯的错误吗

我计划使用正则表达式捕获包含“新闻稿”名称的所有链接,并删除url的其余部分以重定向用户。感谢您的帮助。

使用
(.*newsletter)(.*)
会导致重写单独匹配
/newsletter
,因为
*
匹配零个或多个字符。这会将mod_rewrite发送到一个循环中

相反,您可以使用与一个或多个字符匹配的
+
,为此,我将在
/?
前面加上前缀,以选择性地匹配尾随斜杠。不需要在
()
中捕获它,因为您没有将它作为
$2
重用

RewriteRule ^(.*newsletter)/?.+ $1 [L,R=301]
您的示例开始于
*
。如果你真的需要它,把它放进去。但如果您真的只是想匹配
/newsletter/123/1234
,而不是
/someother/newsletter/123/1234
,请使用以下方法简化:

RewriteRule ^newsletter/?.+ /newsletter [L,R=301]

测试此功能时,请使用私人/匿名浏览窗口或新浏览器。浏览器主动缓存301重定向,如果您反对缓存,它会使调试重写规则变得非常困难。

谢谢您的帮助。现在我也明白了这种行为。我们将从中学习。