Mod Rewrite 规则有条件地编辑 cookie

Mod Rewrite 规则有条件地编辑 cookie

是否可以使用 mod_rewrite 根据条件修改 cookie 中的值?我对 HTTP 完全陌生,但尝试过一两种方法。我所知道的唯一正则表达式是 Perl 样式的,我希望它没问题。

RewriteRule s/.[0-9][0-9][0-9]/COOKIE=MSFNODE/g;
  1. MSFNODE 是我的 cookie 中的一个值。
  2. 我想要运行正则表达式的是 SESSIONID(也在我的 cookie 中)...不确定如何选择它作为目标。
  3. 正如正则表达式所示,我想用我的名为 MSFNODE 的 cookie 值替换 .[0-9][0-9][0-9]。仅当 MSFNODE 存在时!

COOKIE=MSFNODE 是执行此操作的正确方法吗?另外,我只希望在 MSFNODE 存在时发生这种情况 - 如果 MSFNODE 不存在,它现在是否会直接传递而不遵循重写规则?

我觉得即使我最基本的正则表达式在这里也是有缺陷的。

答案1

如果您有设置 cookie 的应用程序代码,那么我建议您在那里处理逻辑。强行让 Apache 处理您的应用程序逻辑并不好。

无论如何,这当然是可能的。我很难弄清楚你想要改变什么(是JSESSIONID还是MSFNODE?你是想过滤成三个连续的数字吗?如果你只是设置MSFNODE它是否已经存在,你会完成什么?),所以我将提供一个一般性的例子:

# If the client sent a cookie named "foo" with some
# arbitrary value...
RewriteCond %{HTTP_COOKIE} foo=([^;]+)
# Then, we'll set a new cookie to send back to the client.
RewriteRule ^ - [CO:bar:newcookievalue:.example.com]

相关内容