使用htaccess删除root中的多个尾部斜杠

时间:2017-10-25 12:11:14

标签: .htaccess

我的htaccess文件中有一个规则可以从网址中删除任何额外的尾部斜杠,这适用于带有任意多个1个尾部斜杠的子目录。然而,它并不适用于根;我需要它做什么。

例如。

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]

4 个答案:

答案 0 :(得分:3)

尝试:

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

答案 1 :(得分:2)

要删除REQUEST_URI中的多个斜杠 ,此规则效果最佳:

RewriteEngine On

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

它充分利用了mod_rewrite引擎本身将所有多个正斜杠转换为RewriteRule模式中的单个斜杠的事实。我们使用RewriteCond %{THE_REQUEST}来确保原始REQUEST_URI包含多个斜杠。

答案 2 :(得分:1)

你可以通过以下链接测试htaccess很有效

https://htaccess.madewithlove.be/

Working

因此,您需要确保使用Chrome Incognito窗口或使用以下内容进行测试

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

我通常更喜欢curl,因为我知道它会从服务器那里得到一个新的响应

答案 3 :(得分:0)

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

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

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