匹配url中的多个斜杠,但不匹配协议

时间:2016-07-19 11:15:18

标签: regex .htaccess

我尝试在url的内部或内部捕获多个斜杠,但不是那些斜杠(可能是两个或更多),它们放在协议之后(http://,https://,ftp://文件:///)

我在http://www.regexr.com/https://regex101.comhttp://www.regextester.com/中的^(.*)//+(.*)$[^:](\/{2,})^(.*?)(/{2,})(.*)$等类似SO线程中尝试了许多发现。但对我来说没有任何明确的做法。

它非常奇怪,我找不到一个有效的例子 - 这个目标不是那么简单。有人可以分享正常运作的正则表达式吗?

1 个答案:

答案 0 :(得分:2)

以下规则可以在您的网站根.htaccess中使用,以从输入网址中删除多个斜杠:

RewriteEngine On

RewriteCond %{THE_REQUEST} //
RewriteRule ^.*$ /$0 [R=301,L,NE]

THE_REQUEST变量表示Apache从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1

RewriteRule内的模式会自动将多个斜杠转换为单个斜杠。