我的htaccess文件中有一条规则可以从url中删除任何额外的尾部斜杠,这适用于带有任意多个1个尾部斜杠的子目录.但它不适用于root; 我需要它做什么.
例如.
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]
Run Code Online (Sandbox Code Playgroud)
要删除此规则中任意位置的REQUEST_URI多个斜杠效果最好:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s[^?]*//
RewriteRule ^.*$ /$0 [R=301,L,NE]
Run Code Online (Sandbox Code Playgroud)
它利用了引擎本身将所有多个正斜杠转换为模式mod_rewrite中的单个斜杠RewriteRule这一事实。我们用来RewriteCond %{THE_REQUEST}确保原始内容REQUEST_URI包含多个斜杠。
这里在匹配查询字符串之前[^?]*//匹配 2 ,因为匹配除 之外的任何内容。这将允许在查询字符串中。//[^?]?//
尝试使用:
RewriteCond %{REQUEST_URI} ^(.*?)//+$
RewriteRule ^ %1/ [R=301,L]
Run Code Online (Sandbox Code Playgroud)