使用RewriteRule对Cookie值使用RewriteMap

时间:2014-08-01 04:52:15

标签: apache url mod-rewrite cookies escaping

我正在尝试转义由RewriteRule设置的cookie值。

例如,假设我的网站为http://www.example.com/blah/foo%2Bbar

我需要接收部分网址并将其作为Cookie发回。

在这种情况下,我可以看到Apache没有转义的网址。

浏览器返回的内容是:

Set-Cookie:mycookie=foo+bar; path=/; domain=www.example.com

这是我当前的配置(注意我添加了转义RewriteMap以尝试解决我的问题,但它没有做任何事情):

RewriteMap esc int:escape

RewriteRule /blah/(.*) - [co=mycookie:${esc:$1}:www.example.com,L]

我的回应是:

Set-Cookie:mycookie=foo%2Bbar; path=/; domain=www.example.com

这可能吗?

1 个答案:

答案 0 :(得分:1)

我是通过perl脚本完成的:

#!/usr/bin/perl
use URI::Escape;
$| = 1;
while (<STDIN>) {
  my $a = $_;
  chomp($a);
  $a = uri_escape($a);
  $a =~ s/%2F/\//g;
  print "$a\n";
}

这是我的新配置:

RewriteMap encode-map prg:/var/www/encode.pl
RewriteRule /blah/(.*) - [co=mycookie:${encode-map:$1}:www.example.com,L]

我能够从RewriteRule, RewriteMap that sets Cookie work badly together

借用实现思路

这就是诀窍。