如何使 RewriteCond %{HTTP_COOKIE} 与 cookie 值完全匹配?

Nic*_*ick 8 mod-rewrite rewrite rewritecond apache-2.2

如何使我的规则与 cookie 的确切值匹配?我试过了:

RewriteCond %{HTTP_COOKIE} ^its=me$ [NC]

RewriteCond %{HTTP_COOKIE} its=^me$ [NC]

RewriteCond %{HTTP_COOKIE} its="me" [NC]

RewriteCond %{HTTP_COOKIE} its=me [NC] 
Run Code Online (Sandbox Code Playgroud)

最后一个几乎有效,但是当额外的文本位于值的末尾时匹配,例如“me2”。仅当itscookie 的确切值为 时me,条件才应为真,之前或之后没有更多内容。

这些值应匹配:

  • 我2
  • [空字符串]
  • [根本没有设置cookie]

Kri*_*ien 8

当然可能有几个 cookie,并且它们可以被 URL 转义,这使得比较变得棘手。

在大多数情况下,这样的事情应该有效:

RewriteCond %{HTTP_COOKIE}     its=([^;]+) 
RewriteCond %1                 ^me$
RewriteRule ......
Run Code Online (Sandbox Code Playgroud)

如果您需要对 cookie 进行转义,您可以为此添加一个重写映射:

RewriteMap unescape int:unescape

RewriteCond %{HTTP_COOKIE}     its=([^;]+) 
RewriteCond %{unescape:%1}     ^me$
RewriteRule ......
Run Code Online (Sandbox Code Playgroud)


daw*_*wud 1

来自在线文档

'=CondPattern'(按字典顺序相等)
将 CondPattern 视为普通字符串,如果 TestString 按字典顺序等于 CondPattern(这两个字符串完全相等,每个字符),则按字典顺序将其与 TestString.True 进行比较。如果 CondPattern 为“”(两个引号),则将 TestString 与空字符串进行比较。

这有效吗?

RewriteCond %{HTTP_COOKIE} =its=me [NC]


归档时间:

查看次数:

25596 次

最近记录:

11 年,8 月 前