删除尾部斜杠会生成绝对文件路径



行为

如果我去: http://localhost/login
...一切都按照接受的方式工作

如果我去: http://localhost/login/
..我被重定向到:http://localhost/var/www/public/login

预期行为是删除尾部斜杠:
http://localhost/login/ =>> http://localhost/login

.htaccess:

RewriteEngine On
RewriteRule (.+)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

问题

  1. 为什么它没有按预期工作?
  2. 如何使其按预期工作?

尝试使用此规则来删除尾部斜杠(使用非贪婪正则表达式):

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

您的示例可能没有错。尝试清除缓存,它应该可以工作。

最新更新