删除尾部反斜杠移动到子目录的前面

时间:2014-01-14 22:37:50

标签: regex apache .htaccess mod-rewrite

我将此行添加到我的.htaccess文件中以删除尾部反斜杠:

RedirectMatch 301 ^(.*)/$ /$1 

但它会导致反斜杠移动到子目录的后面(在域前面)。

所以,如果我输入:localhost/subfolder/

进入地址栏并按回车键结果是这样的:

localhost//subfolder

我也试过

RewriteRule ^(.+)/$ /$1 [R=301,L]

但这有同样的问题(和其他问题)。任何人都知道为什么会这样。谢谢你的阅读

P.S。我正在使用apache2.4.4

1 个答案:

答案 0 :(得分:1)

由于RedirectMatch中的URI以前导斜杠开头,因此您可以使用此规则:

RedirectMatch 301 ^(.*)/$ $1 

但最好是使用mod_rewrite规则从此规则中排除目录:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]
RewriteRule ^ %1 [R=301,NE,L]