基于此处找到的代码:删除多个尾部斜杠 mod_rewrite
我有以下 htaccess
Options +FollowSymLinks
DirectorySlash Off
RewriteEngine on
RewriteOptions inherit
RewriteBase /
#
# remove multiple slashes from url
#
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{THE_REQUEST} ^[A-Z]+\s//+(.*)\sHTTP/[0-9.]+$ [OR]
RewriteCond %{THE_REQUEST} ^[A-Z]+\s(.*/)/+\sHTTP/[0-9.]+$
RewriteRule .* http://%{HTTP_HOST}/%1 [R=301,L]
#
# Remove multiple slashes anywhere in URL
#
RewriteCond %{THE_REQUEST} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
然而我发现 G-Bot 已经爬取了这个 url: http://www.example.com/aaa/bbb/////////bbb-ccc/bbb-ddd.htm
。(aaa、bbb、ccc、ddd 是 url 中的关键字,请勿随意使用 - 我只是显示 url 的模式)
通过实时服务器测试上述网址,我发现斜线删除不起作用。
任何人都可以对现有代码提供任何提示或改进?谢谢
编辑 1
@Sylwester 提供了以下代码
# if match set environment variable and start over
RewriteRule ^(.*?)//+(.*)$ $1/$2 [E=REDIR:1,N]
# if done at least one. redirect with 301
RewriteCond %{ENV:REDIR} 1
RewriteRule ^/(.*) /$1 [R=301,L]
它也不起作用。我仍然在 url 中看到 //////。
我已经将这组规则放在我的 htaccess 文件的最顶部,就在“RewriteBase /”的下方,以免受到其他规则的影响,但是……什么都没有。
还有什么建议吗?