我正在尝试转义由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
这可能吗?
答案 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
借用实现思路这就是诀窍。