如何使用重写规则来测试 Cookie 中的日期?

如何使用重写规则来测试 Cookie 中的日期?

我发现你不能在下一个 RewriteCond 中使用 RewriteCond 反向引用作为模式条件......

更新:事实证明,mod_rewrite 不会扩展测试模式中的任何变量,因此我实际上只是在测试 cookie 是否存在...关于如何实际测试值而不是仅仅测试存在性,有什么想法吗?

RewriteCond %{HTTP_COOKIE} niftyExpire=([^;\ ]+)
RewriteRule .*index.html /fake.html [E=niftyExpire:%1,C]
RewriteCond %{TIME} <{ENV:niftyExpire}
RewriteRule .*fake.html /pass.html [R,L]
RewriteRule .*index.html /fail.html [R,L]

谢谢,

-埃里克

答案1

如果我有代表的话我会发表评论......

我认为你不需要在你的示例中使用反斜杠。例如

RewriteCond %{HTTP_COOKIE} niftyExpire\=([^; ]+) [NC]

应该只是

RewriteCond %{HTTP_COOKIE} niftyExpire=([^; ]+) [NC]

这里有一个很好的资源和一些例子(不是专门关于日期,但包括基于 cookie 值的重写规则):

http://www.askapache.com/htaccess/htaccess-fresh.html

相关内容