URL encoding issue
Harish Sundararaj
tuxtoti at gmail.com
Thu Apr 15 14:43:10 MSD 2010
Hi all,
I have a problem with nginx's urlencoding when it does a rewrite and passes
it on to a proxy backend. Below is the config:
location ~ ^/search/([^/]+)/?([^-/&]+)?.*$ {
set $query $1;
set $filter $2;
rewrite ^ /search?q=$query&cat=$filter&$args? last;
}
location ~ ^/(search) {
proxy_read_timeout 180;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://load_balance;
}
I match requests like :
/search/queryABC/fitlerDEF
/search/queryABC
/search/queryABC/
and rewrite it to
/search?q=queryABC&cat=filterDEF
/search?q=queryABC
/search?q=queryABC
which all works properly.
Now the problem is if the query has special characters like & , ", ' etc...
they are not urlencoded before rewriting:
Eg:
/search/jhonson&jhonson becomes /search?q=jhonson&jhonson but what I
expect is: /search?q=jhonson&26jhonson
/search/"tourism in paris" becomes /search?q=\"tourism%20in%20paris\" but
what I expect is /search?q=%22tourism%20in%20paris%22 [This is weird spaces
are urlencoded properly]
Even if i try to urlencode it from the frontend(Javascript) like:
/search/jhonson&26jhonson still becomes /search?q=jhonson&jhonson which
again looks weird to me !
Am i missing anything? Is there anything that i can do to get what i expect
?
Thanks
Harish
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20100415/09fd7fa3/attachment.html>
More information about the nginx
mailing list