如何在 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(两者同时)?

如何防止 apache 在 URL 路径中使用单斜杠减少双斜杠?

Apache 2.4 - 删除 |删除 |卸载

在 Apache 2.4 中链接 URL 重写规则

通过 .htaccess 从 URL 中删除双斜杠不起作用

从 Apache 2,2 迁移到 Apache 2.4 后,URL 重写不起作用