我有以下规则:
location /trk/ {
if ($args ~ "url=(.*)" ) {
set $url $1;
rewrite click.gif$ $url? redirect;
rewrite redirect.gif$ $url? redirect;
}
}
问题是如果我有这样的请求:
http://bar.com/trk/click.gif?some_foo&url=http://foo.com/%3Fmore_foo%3F
它被重写为
http://foo.com/?more_foo%3F
我需要第一个%3F
才能解码?
它似乎解码了FIRST,只解码了它找到的第一个编码字符。
我正在使用nginx版本1.1.13
答案 0 :(得分:0)
我通过使用以下内容重写上述内容来解决这个问题:
location /trk/click.gif {
if ($args ~ "url=(.*)" ) {
return 302 $1;
}
empty_gif; expires 0; add_header Cache-Control "no-cache, no-store, must-revalidate";
}