.htaccess 使用htaccess删除根目录中的多个尾随斜杠

scyqe7ek  于 2022-11-16  发布在  其他
关注(0)|答案(4)|浏览(142)

我在htaccess文件中有一个规则,可以从url中删除任何多余的斜杠,这个规则适用于任何多于一个斜杠的子目录。这是我需要的
比如说。
http://www.example.com/test////重定向到http://www.example.com/test/
http://www.example.com///需要重定向到http://www.example.com
有什么我需要补充的吗?干杯。

RewriteCond %{REQUEST_URI} ^(.*?)(?:/){2,}$
RewriteRule . %1/ [R=301,L]
bakd9h0s

bakd9h0s1#

要删除REQUEST_URI任意位置的多个斜杠,此规则效果最佳:

RewriteEngine On
    
RewriteCond %{THE_REQUEST} \s[^?]*//
RewriteRule ^.*$ /$0 [R=301,L,NE]

它利用了**mod_rewrite引擎本身将RewriteRule模式中的所有多个正斜杠转换为单个斜杠的事实**。我们使用RewriteCond %{THE_REQUEST}来确保原始REQUEST_URI包含多个斜杠。
此处[^?]*//在匹配查询字符串之前匹配2个//,因为[^?]匹配除?之外任何内容这将允许查询字符串中存在//

anhgbhbe

anhgbhbe2#

尝试使用:

RewriteCond %{REQUEST_URI} ^(.*?)//+$
RewriteRule ^ %1/ [R=301,L]
zpqajqem

zpqajqem3#

你的htaccess工程伟大,因为你可以测试下面的链接
https://htaccess.madewithlove.be/

因此,你需要确保你的测试要么使用Chrome隐身窗口或使用如下

curl -v http://example.com////

我通常更喜欢curl,因为我知道它总是能从服务器给予一个新的响应

jbose2ul

jbose2ul4#

你只需要两个规则来匹配两个不同的模式

RewriteCond %{REQUEST_URI} ^(?:/){2,}$
RewriteRule . / [R=301,L]

RewriteCond %{REQUEST_URI} ^(.*?)(?:/){2,}$
RewriteRule . %1/ [R=301,L]

相关问题