HTTP_COOKIE RewriteCond失败

时间:2016-07-07 21:46:16

标签: apache mod-rewrite cookies

我的Apache配置文件中有以下RewriteEngine on RewriteCond %{HTTP_COOKIE} ^returnvisitor$ [NC] RewriteRule .? - [S=3] RewriteRule /index.html /new_visitor.html RewriteRule .* - [CO=returnvisitor:yes:.127.0.0.1:1440:/:true:true] RewriteRule .? - [S=1] RewriteRule /index.html /returning_visitor.html 代码,但我无法识别cookie何时出现。我在这里看了很多答案,但似乎无法找到解决我遇到的任何问题的答案。

RewriteEngine on
RewriteCond %{HTTP_COOKIE} returnvisitor=yes [NC]
RewriteRule .? - [S=3]
RewriteRule /index.html /new_visitor.html [R]
RewriteRule .* - [CO=returnvisitor:yes:.127.0.0.1:1440:/:true:true]
RewriteRule .? - [S=1]
RewriteRule /index.html /returning_visitor.html [R,L]

更新1:

我已经修改了以下代码并取得了一些进展,但仍然没有按预期行事。

index.html

原始代码会重定向主页(即默认页面为index.html)但是,现在我必须在网址中手动请求index.html才能触发重定向,但至少这次是我returning_visitor.html的第二个请求已重定向到example.com

首次访问new_visitor.html时,我需要通过returning_visitor.html访问hompage时发生重定向,并将后续访问重定向到example.com/index.html。无需手动输入find

1 个答案:

答案 0 :(得分:1)

您可以使用:

RewriteEngine on
#First visit
# if the cookie is not set
RewriteCond %{HTTP_COOKIE} !returnvisitor=yes$ [NC]
# serve "/new_visitor.html" 
RewriteRule /index.html /new_visitor.html [R,L]
#second visit
#set the cookie "returnvisitor" on any uri
RewriteRule .* - [CO=returnvisitor:yes:.127.0.0.1:1440:/:true:true]
#check to see that the cookie is set
RewriteCond %{HTTP_COOKIE} returnvisitor=yes$ [NC]    
#if so, redirect the index.html to "/returning_visitor.html" 
RewriteRule /index.html /returning_visitor.html [R,L]

让我知道它对你有用。