这里是我的重写规则:如果它产生如何去除多个尾部斜线?
###########
# 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),这可以使我的索引页在搜索引擎中被索引两次。不是真的很友善。 –