ここにあるコードに基づく:複数の末尾のスラッシュを削除する 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 のパターンを示します)
上記の 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 /" のすぐ下に配置しましたが、まだ... 何もありません。
他の提案はありますか?