這裏是我的重寫規則:如果它產生如何去除多個尾部斜線?
###########
# Rewrite #
###########
# Settings
RewriteEngine On
RewriteBase/
# Cache Busting
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} "^(.+)\.\d+\.(css|js)$" [NC]
RewriteRule "^.*$" "/%1.%2" [L]
# No Index
RewriteCond %{THE_REQUEST} "\ /.*index\.php.*\ " [NC]
RewriteRule "^(.*)index\..+$" "/$1" [L,NC,R=301]
# No Question Mark
RewriteCond %{THE_REQUEST} "\ /[^?]*\?\ "
RewriteRule "^(.*)$" "/$1?" [L,R=301]
# WWW
# RewriteCond %{HTTP_HOST} !"^(?:static|www)\.(.+)$" [NC]
# RewriteCond %{HTTPS}s "^on(s)|"
# RewriteRule "^(.*)$" http%2://www.%1/$1 [L,R=301]
一切工作正常(任何建議,以改善性能和更好的正則表達式是值得歡迎的,反正),但我遇到一個奇怪的情況,我不明白通過我的重寫規則或默認的Apache行爲。 如果我的URL以「/」結尾,那麼我可以在不重寫的情況下添加儘可能多的斜線。
例如,如果在我的地址欄我插入以下:
HTTP:// [MY-HOST-NAME] //////////////// ////////////
所有這些斜槓都沒有被刪除。我仍然看到我的index.php頁面。 如果我輸入以下地址:
的http:// [MY-HOST-NAME] /會員///
所有這些多斜線不會被刪除,我可以看到我的會員index.php頁面。 依此類推...
有人可以幫我嗎?非常感謝!
那麼,究竟哪些規則應該重寫斜線,爲什麼? (我不打擾和對待「用戶錯誤」太多的斜槓,但...) – 2011-12-10 21:30:51
爲什麼要重要?如果*您的網站*不會添加不應該存在的額外尾部斜槓,則不必擔心。爲什麼浪費額外的HTTP請求來刪除用戶手動添加的額外斜線,這最終將不會影響顯示的頁面? – animuson
爲什麼它重要,如果它對我來說很重要? 如果你有解決方案,它很好,張貼它。如果你沒有回答。我正在尋求它,因爲我看到很多請求「/」和「//」的機器人(包括Google Bot),這可以使我的索引頁在搜索引擎中被索引兩次。不是真的很友善。 –