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

时间:2018-03-06 21:33:12

标签: apache mod-rewrite apache2.4

我尝试使用重写规则删除网址中的双斜线,但它无法正常工作。

我已经尝试过了:

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

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

我创建了一个文件test.php我的根目录,里面有$ _SERVER转储; 每当我打电话给example.com/test.php ou example.com////test.php它总是显示我的文件,但$ _SERVER ['查询']仍然包含//// 我该如何重定向?

1 个答案:

答案 0 :(得分: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]

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

注意:清除浏览器缓存,然后对其进行测试。