如何在 apache 2.4 的 url 中删除双斜杠//?
Posted
技术标签:
【中文标题】如何在 apache 2.4 的 url 中删除双斜杠//?【英文标题】:How to remove double slash // in url on apache 2.4? 【发布时间】:2018-08-14 20:54:15 【问题描述】:我正在尝试使用重写规则删除网址中的双斜杠,但它不起作用。
我已经试过了:
RewriteRule ^(([^/]+/)*)/+(.*) https://www.example.com/$1$3 [R=301,L]
或
RedirectMatch 301 ^//(.*)$ http://example.com/$1
我在我的根目录创建了一个文件 test.php,其中包含 $_SERVER 的转储; 每当我调用 example.com/test.php 或 example.com////test.php 它总是显示我的文件,但 $_SERVER['query'] 仍然包含 //// 我该如何重定向它?
【问题讨论】:
【参考方案1】:匹配%THE_REQUEST
浏览器向服务器http://httpd.apache.org/docs/current/mod/mod_rewrite.html发送的完整HTTP请求行,如流水:
RewriteEngine On
RewriteCond %THE_REQUEST ^[A-Z]3,\s/2,((?!%20HTTP/1.1\b)\b\w+) [NC]
RewriteRule ^ /%1 [R=301,L,NE]
或者这个:
RewriteEngine On
RewriteCond %THE_REQUEST ^[A-Z]3,7\s//+(.*)\sHTTP.*$
RewriteRule ^.*$ /%1 [R=301,L]
因此,上面的代码将删除任何额外的前导斜杠。
注意:清除浏览器缓存然后测试。
【讨论】:
以上是关于如何在 apache 2.4 的 url 中删除双斜杠//?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 apache 2.4 RewriteRule 中使用发布数据规则编写替换和重定向 url(两者同时)?