防止 mod_rewrite 中的重定向循环

防止 mod_rewrite 中的重定向循环

我正在 htaccess 中编写一条规则,其基本内容如下:

  • 如果请求的是主页
  • 尚未设置 cookie
  • 使用 /addCookie.php 重写页面

然后在 addCookie.php 中,我们设置 cookie 并重定向回主页。这一切都很好,但如果用户不接受 cookie,我们就会陷入无限的重定向循环。

我是 mod_rewrite 的新手,我搜索了很多,但还是无法打破循环。目前我有以下信息:

  RewriteCond %{ENV:REDIRECT_STATUS} 200
  RewriteRule .* - [S=1]

  RewriteCond %{REQUEST_URI} "^/$"
  RewriteCond %{HTTP_COOKIE} !device_detected
  RewriteRule ^ addCookie.php [L]

我想要做的事情可行吗?我可以从 addCookie.php 在重定向中添加查询字符串,但我更希望保持请求相同。

欢迎提出任何建议。

答案1

是的,这是不可能的;REDIRECT_STATUS当客户端处理重定向(从addCookie.php位置返回/)时,将不会出现。

如果客户端没有发送 cookie,为什么不简单地将 cookie 设置作为主页处理的一部分呢?如果用户不接受该 cookie 而您的应用程序又需要它,那么可能会骚扰用户吗?

相关内容