Apache在{HTTP_COOKIE}中匹配{HTTP_HOST}

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}

我想检查{HTTP_HOST}是否在{HTTP_COOKIE}中,如果没有,则重定向到一个COOKIE值

cookie已正确设置为:(cookie名称为DST_主机)

现在我正在努力处理RewriteCond语句,因为我们无法比较两个变量

我可以轻松测试cookie是否设置了:

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(.*)$