我正在 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 而您的应用程序又需要它,那么可能会骚扰用户吗?