我尝试将所有网址重定向为小写,并删除尾随斜线。
我的htaccess文件现在看起来像这样:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.*)/"
RewriteRule [A-Z] %1 [R=308,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [R=308,L]
</IfModule>
这确实有效,但是它一个接一个地进行了两次重定向。第一次重定向强制小写,第二次重定向删除尾部斜杠。
如何将这两个规则合并为一个重定向?
1条答案
按热度按时间5ssjco0h1#
您不需要为了减少重定向次数而实际合并这两个规则。您可以颠倒这两个规则的顺序,并始终在删除尾部斜杠的规则中将URL转换为小写。
例如:
将这两个规则结合使用(不增加额外的复杂性)的一个潜在问题是,您避免了将Map到目录的URL转换为小写(这可能是个问题,也可能不是个问题),因为您只能删除非目录上的尾随斜杠。
注意,我在第一个规则(以前是第二个规则)中使用了另一种regex语法,以避免在regex中转义斜杠。
RewriteRule
pattern 现在也可以简化,因为我们只需要AssertURL以尾随斜杠结尾。请注意,如果这些指令是必需的,则应删除
<IfModule>
Package 。