![如何使用重写规则来测试 Cookie 中的日期?](https://linux22.com/image/795079/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E6%9D%A5%E6%B5%8B%E8%AF%95%20Cookie%20%E4%B8%AD%E7%9A%84%E6%97%A5%E6%9C%9F%EF%BC%9F.png)
我发现你不能在下一个 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 值的重写规则):