如何使用mod_rewrite在.htaccess中测试许多cookie?

我想基于使用htaccess / mod_rewrite的两个cookie的值进行内部重定向。我不知道如何使用反向引用来检测测试cookie的两个值。这是我想要做的:
foo = value_of_cookie_foo
bar = value_of_cookie_bar
if (foo AND bar) {
  RewriteRule ^(.*)$ mysite/foo/bar [R,L]
}
遗憾的是,以下代码不起作用。这是因为(根据Apache文档)反向引用仅适用于最后的
RewriteCond
。第一个没有考虑在内。
 RewriteCond %{REQUEST_URI} ^/whatever$
 RewriteCond %{HTTP_COOKIE} cookie_foo=([^;]+) [NC]
 RewriteCond %{HTTP_COOKIE} cookie_bar=([^;]+) [NC]
 RewriteRule ^(.*)$ mysite/%1/%2 [R,L]
对于cookie
cookie_foo=foo; cookie_bar=bar;
,上述代码重定向到http://mydomain.com/mysite/bar而不是http://mydomain.com/mysite/foo/bar。 我应该将两个饼干的测试都放在一个
RewriteCond
中吗?怎么样?     
已邀请:
您应该重新排序cookie值以立即获取它们:
RewriteCond %{REQUEST_URI} ^/whatever$
RewriteCond %{HTTP_COOKIE} (^|;s*)cookie_foo=([^;]+)
RewriteCond %2;%{HTTP_COOKIE} ^([^;]+)(;s*|[^;])+cookie_bar=([^;]+) [NC]
RewriteRule ^(.*)$ mysite/%1/%3 [R,L]
这会将cookie_foo值放在开头,然后获取cookie_bar值。     
你可以为这样的cookie检查:
RewriteCond %{HTTP_COOKIE} cookie_foo=([^;]+);scookie_bar=([^;]+);? [NC]
    

要回复问题请先登录注册