Apache在{HTTP_COOKIE}中匹配{HTTP_HOST}
我想检查{HTTP_HOST}是否在{HTTP_COOKIE}中,如果没有,则重定向到一个COOKIE值 cookie已正确设置为:(cookie名称为DST_主机) 现在我正在努力处理RewriteCond语句,因为我们无法比较两个变量 我可以轻松测试cookie是否设置了:Apache在{HTTP_COOKIE}中匹配{HTTP_HOST},apache,variables,mod-rewrite,Apache,Variables,Mod Rewrite,我想检查{HTTP_HOST}是否在{HTTP_COOKIE}中,如果没有,则重定向到一个COOKIE值 cookie已正确设置为:(cookie名称为DST_主机) 现在我正在努力处理RewriteCond语句,因为我们无法比较两个变量 我可以轻松测试cookie是否设置了: RewriteCond %{HTTP_COOKIE} DST_HOST 但是我不能做变量比较测试。这个想法是这样的: RewriteCond %{HTTP_COOKIE} !DST_HOST=%{HTTP_HOST}
RewriteCond %{HTTP_COOKIE} DST_HOST
但是我不能做变量比较测试。这个想法是这样的:
RewriteCond %{HTTP_COOKIE} !DST_HOST=%{HTTP_HOST}
语句的正确部分没有计算,我们只能将静态内容放在这里
然后,我尝试了Apache配置指南中的内容:
RewriteCond expr "! %{HTTP_COOKIE} -strmatch '*%{HTTP_HOST}*'"
但是它不计算变量(我运行的是Apache2.4,可能这只适用于Apache2.5)
任何帮助都将不胜感激
亲切问候,,
Jean Damien找到了解决方案:
RewriteCond %{HTTP_HOST}!!%{HTTP_COOKIE} !^(.+)!!(.*)\1(.*)$
必须使用通配符,因为{HTTP_COOKIE}可以包含许多COOKIE。我相信您可以使用Apache If语句。顺便说一句,Apache 2.5不存在。请在此处找到它:
RewriteCond %{HTTP_HOST}!!%{HTTP_COOKIE} !^(.+)!!(.*)\1(.*)$