同様の質問 here がありますが、このソリューションはApacheのサイトでは機能しません。
サイトのURLから複数の末尾のスラッシュを削除しようとしています。動作していると思われる.htaccess
コードがいくつか見つかりました。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
このルールは、URLの任意の場所から複数のスラッシュを削除します。
http://www.mysite.com/category/accessories////
becomes
http://www.mysite.com/category/accessories/
ただし、余分なスラッシュごとに1回リダイレクトされます。そう:
http://www.mysite.com/category/accessories///////
301 Redirects to
http://www.mysite.com/category/accessories//////
301 Redirects to
http://www.mysite.com/category/accessories/////
301 Redirects to
http://www.mysite.com/category/accessories////
301 Redirects to
http://www.mysite.com/category/accessories///
301 Redirects to
http://www.mysite.com/category/accessories//
301 Redirects to
http://www.mysite.com/category/accessories/
単一の301リダイレクトですべてを実行するようにこのルールを書き換えることは可能ですか?
また、上記のディレクティブは、サイトのルートレベルでは機能しません。
http://www.mysite.com///// does not redirect but it should.
スラッシュがURLの最後にのみ発生する場合は、これを使用できます
RewriteCond %{REQUEST_URI} ^(.*?)(?:/){2,}$
RewriteRule . $1/ [R=301,L]
RewriteEngine on
RewriteBase /
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]