如何在 apache 2.4 的 url 中删除双斜杠//?

How to remove double slash // in url on apache 2.4?

我正在尝试使用重写规则删除 url 中的双斜杠,但它不起作用。

我已经试过了:

RewriteRule ^(([^/]+/)*)/+(.*) https://www.example.com/ [R=301,L]

RedirectMatch 301 ^//(.*)$ http://example.com/

我创建了一个文件 test.php 我的根目录,里面有 $_SERVER 的转储; 每当我调用 example.com/test.php ou example.com////test.php 它总是显示我的文件但 $_SERVER['query'] 仍然包含这 //// 我怎样才能重定向它?

匹配 %{THE_REQUEST} 浏览器向服务器发送的完整 HTTP 请求行 http://httpd.apache.org/docs/current/mod/mod_rewrite.html 就像这样:

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]

因此,上面的代码将删除任何额外的前导斜杠。

注意:清除浏览器缓存然后测试。