如何解决处理 .htaccess 中的尾部斜杠时 uri 上出现意外后缀
我有一个设置,而不是多次重定向用户,如果我的任何重写通过,我会设置一个环境变量,然后在最后测试所述变量,如下所示:
RewriteRule ^(.*)á(.*)$ $1a$2 [NC,N,E=redir:1] # Remove accented character and set var
RewriteCond %{ENV:redir} 1 # Check for var
RewriteRule ^(.*)$ $1 [R=301,L,END] # Redirect
就在最近,在处理尾随斜杠时,我注意到一些奇怪的行为以及以下两个重写规则的附加效果,这让我很头疼。考虑以下 .htaccess 文件:
RewriteEngine ON
RewriteBase /
RewriteRule ^(.+)([^/])$ $1$2/ # Add trailing slash if missing
RewriteRule ^(.*)$ $1 [R=301] # Redirect
我确实理解上面的代码在其他方面功能失调,并且会导致重定向循环,这只是为了演示
如果我向 mysite.com/foo
发送请求,一切都按预期进行,我会重定向到 /foo/
。但是,如果我向 /foo/bar
发送请求,服务器响应重定向到 /foo/bar//bar
,这似乎没有任何意义。
我对可能是什么原因和/或如何解决它感到非常困惑:对现象的解释,或者可能是一种不太不稳定的方法来做到这一点真的很感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。