如果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数组串联为一个字符串?
答案 0 :(得分:2)
有没有办法让它完全匹配
当然,您可以使用此增强型正则表达式来确保没有匹配的文本:
RewriteCond %{HTTP_COOKIE} !(^|\s)some-cookie-name=some-cookie-value(;|$) [NC]
RewriteRule ^ /some-sort-of-error/ [NC,L,R=301]
多个Cookie由分号和空格分隔。