基於代碼在這裏找到:remove multiple trailing slashes mod_rewriteurl上的多個斜槓:如何刪除?
我有以下的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-機器人已經抓取了這個網址:http://www.example.com/aaa/bbb/////////bbb-ccc/bbb-ddd.htm
。 (aaa,bbb,ccc,ddd,是url中的關鍵字,不會被採取litraly - 我jut顯示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 /」下面,以免受到其他規則的影響,但是......什麼都沒有。
還有其他建議嗎?
那麼爲什麼在其他問題的答案不適合你? – JJJ
@Juhana我不知道 – andrew
我設法在您提供的鏈接中找到答案。我敢打賭你也可以。 – Sylwester