On Sun, Jul 29, 2007 at 03:15:32PM +0400, Alexey Rymonin wrote:
> Имею следующее
> ........
> location /servlets/ {
> rewrite ^(.*)$ $1?tom_req_uri=$request_uri
> break;
>
> proxy_pass http://127.0.0.1:8080;
> proxy_redirect off;
>
> proxy_set_header Host $host;
> proxy_set_header X-Real-IP $remote_addr;
> }
> ........
> rewrite ^/search/candidate?$
> /servlets/Search?file=/search/candidate.htt&action=2&main=100&base=102&hrefname=resume&searchcandidate=true
> last;
> ........
>
> следующий запрос
>
> http://www.e-prof.ru/search/candidate?seach=true&query=%F2%E5%F1%F2%EE%E2%EE%E5
>
> в результате получаю что tom_req_uri = /search/candidate?seach=true
> именно этому же равняется $request_uri (раз такой результат то
> это в общем логично)... при этом он подставляет всегда первый
> параметр из запрос... в примере это был seach=true
>
> почему такое происходит и как этого можно избежать?
В моих тестах бэкенду уходит:
/servlets/Search?tom_req_uri=/search/candidate?seach=true&query=%F2
%E5%F1%F2%EE%E2%EE%E5&file=/search/candidate.htt&action=2&main=100&base=102&hrefname=resume&searchcandidate=true&seach=true&query=
%F2%E5%F1%F2%EE%E2%EE%E5
Касти, я бы сделал
location = /search/candidate {
rewrite ...;
}
И зачем "?" в ^/search/candidate?$ ? Аргументы никогда не проверяются в rewrite.
--
Игорь Сысоев
http://sysoev.ru