在.htaccess中,HTTP_COOKIE被视为单个字符串?

时间:2014-08-29 07:30:33

标签: .htaccess cookies

如果cookie没有设置为某个值,我想阻止访问文件夹。

RewriteEngine On
RewriteCond %{HTTP_COOKIE} !some-cookie-name=some-cookie-value [NC]
RewriteRule .* /some-sort-of-error/ [NC,L,R=301]

似乎将cookie名称和值视为字符串cookie-name=cookie-value。它似乎只检查此字符串是否包含 cookie-name=cookie-value而不是等于

所以在上面,如果cookie名称为foo-some-cookie-name和/或值为some-cookie-value-foo,则授予对该文件夹的访问权。

这是正常行为还是有任何方法让它完全匹配? HTTP_COOKIE是否将整个cookie数组串联为一个字符串?

1 个答案:

答案 0 :(得分:2)

  

有没有办法让它完全匹配

当然,您可以使用此增强型正则表达式来确保没有匹配的文本:

RewriteCond %{HTTP_COOKIE} !(^|\s)some-cookie-name=some-cookie-value(;|$) [NC]
RewriteRule ^ /some-sort-of-error/ [NC,L,R=301]

多个Cookie由分号和空格分隔。