处理 .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 (将#修改为@)