结合链式重写规则删除所有尾随斜杠

结合链式重写规则删除所有尾随斜杠

我正在使用此规则删除所有尾随斜杠:

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

但 301 标头仅在满足最后一条规则时才会发送。我无法将这些规则组合起来并使其发挥作用。

RewriteRule ^(.*)/+$ $1 [R=301,L]不起作用,看起来是的,但它会产生重写循环。我需要立即删除所有斜线...

答案1

我宁愿修复多余斜杠的来源,也不愿使用这种重定向解决方案来避免出现问题。

但是,这是可以实现您想要的效果的规则:

RewriteRule ^([^/]*)/+$ $1 [L,R=301]

不要使用 .*(0 个或多个任意字符的实例),而要使用“除 / 之外的任意字符”字符类。这样,(.*) 部分将不会匹配原始 URL 的任何 / 部分,从而导致重定向循环。

相关内容