我的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]
答案 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/
因此,您需要确保使用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]