防止mod_rewrite中的redirect循环

我在我的htaccess中写了一个规则,基本上这样说:

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

然后在addCookie.php中,我们设置cookie并redirect回主页。 这一切都很好,但如果用户不接受cookie,我们会得到一个无限循环的redirect。

我是新来的mod_rewrite,我做了很多search,但不能打破循环。 我到目前为止:

RewriteCond %{ENV:REDIRECT_STATUS} 200 RewriteRule .* - [S=1] RewriteCond %{REQUEST_URI} "^/$" RewriteCond %{HTTP_COOKIE} !device_detected RewriteRule ^ addCookie.php [L] 

我正在尝试做什么? 我可以添加一个查询string从addCookie.php的redirect,但我宁愿保持相同的请求。

任何build议,慷慨欢迎。

是的,那是不可能的。 当客户端是处理redirect的客户端(从addCookie.php位置返回到/ )时, REDIRECT_STATUS将不存在。

为什么不简单地设置一个cookie作为你的主页处理的一部分,如果客户端没有发送这个cookie,并且如果他们不接受这个cookie并且它是你的应用程序需要的话,可能会骚扰用户呢?