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