如何删除多个尾随斜线? [英] How to remove multiple trailing slashes?

查看:139
本文介绍了如何删除多个尾随斜线?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是我重写规则:

  ###########
# 改写 #
###########
#设置
RewriteEngine叙述上
的RewriteBase /
#缓存清除
的RewriteCond%{} REQUEST_FILENAME!-f
的RewriteCond%{} REQUEST_FILENAME!-d
的RewriteCond%{REQUEST_URI}^ \ \ D + \(+)。(CSS | JS)$[NC]
重写规则^ * $/%1.%2[L]
#无索引
的RewriteCond%{} THE_REQUEST\ /.*指数\ .PHP。* \[NC]
重写规则^(。*)指标\ .. + $/ $ 1[L,NC,R = 301]
#没有问号
的RewriteCond%{} THE_REQUEST\ / [^] * \?\
重写规则^(。*)$/ $ 1〜 [L,R = 301]
# 万维网
#的RewriteCond%{HTTP_HOST}!^(?:静| WWW)\(。+)$[NC]
#的RewriteCond%{} HTTPS的^关于(S)|
#重写规则^ $(*)HTTP%2://www.%1/$1 [L,R = 301]
 

一切工作正常(任何建议,以改善性能和更好的正则表达式是值得欢迎的,反正),但我遇到一个奇怪的情况,我不明白,如果它是由我重写规则或默认的Apache行为产生的。 如果我的网址以/结尾,我可以,我想没有它被改写添加尽可能多的斜线。

例如,如果在我的地址栏我插入如下:

  

HTTP:// [MY-HOST-NAME] ////////////////////////////

所有这些斜线不会被删除。而且我还看到我的index.php页面。 如果我输入以下地址:

  

HTTP:// [MY-HOST-NAME] /成员///

所有这些多重斜线不会被删除,我可以看到我的成员index.php页面。 等等...

有人能帮助我吗?非常感谢!

解决方案

 的RewriteCond%{THE_REQUEST} //
重写规则。* $ 0 R]
 

Here are my rewrite rules:

###########
# 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]

Everything works fine (any suggestion to improve performances or for better regexps is welcome, anyway) but I'm experiencing a weird situation and I can't understand if it's produced by my rewrite rules or by a default Apache behavior. If my URL ends with a "/", I can append as many slashes as I want without it being rewritten.

For example, if in my address bar I insert the following:

http://[MY-HOST-NAME]////////////////////////////

All those slashes are not being removed. And I'm still seeing my index.php page. If I insert the following address:

http://[MY-HOST-NAME]/members///

All those multiple slashes are not being removed and I can see my members index.php page. And so on...

Can someone help me please? Many thanks!

解决方案

RewriteCond %{THE_REQUEST} //
RewriteRule .* $0 [R]

这篇关于如何删除多个尾随斜线?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆