如何在 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]
因此,上面的代码将删除任何额外的前导斜杠。
注意:清除浏览器缓存然后测试。
我正在尝试使用重写规则删除 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]
因此,上面的代码将删除任何额外的前导斜杠。
注意:清除浏览器缓存然后测试。