ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: problem with nginx-0.3.48



On Wed, 31 May 2006, Andrei Nigmatulin wrote:

У меня проблема с nginx, не могу ее решить самостоятельно, прошу Вашей помощи.

Делаю так:

       location ~ ^/[^/]+/invite/ {
           if ($request_uri ~* "/([^/]+)/invite/([^/]+)/(.*)" ) {
               set $login $1;
               set $invite_id $2;
               set $location $3;
           }
           fastcgi_param login $login;
           fastcgi_param invite_id $invite_id;
           fastcgi_param location $location;
           fastcgi_param PATH_TRANSLATED /home/anight/nginx-bug/test.phtml;
           fastcgi_param REQUEST_URI       $request_uri;
           fastcgi_param REQUEST_METHOD    $request_method;
           fastcgi_pass    127.0.0.1:8002;
       }

в test.phtml:

<?
   echo $_SERVER["location"];
?>

Делаю запрос:

http://localhost:8000/test/invite/35264/search/?q=Learn+french

Скрипт отвечает:

search/%3fq=Learn%2bfr

Ожидаю увидеть от скрипта:

search/%3fq=Learn%2bfrench

В чем тут может быть проблема ?

Прилагаемый патч решает эту ошибку.
Вывод должен быть "search/%3fq=Learn%2bfrench".


Игорь Сысоев
http://sysoev.ru
--- src/http/ngx_http_script.c  Wed May 24 20:05:26 2006
+++ src/http/ngx_http_script.c  Wed May 31 17:27:59 2006
@@ -501,7 +501,7 @@
             && (e->request->quoted_uri || e->request->plus_in_uri))
         {
             return e->captures[code->n + 1] - e->captures[code->n]
-                   + ngx_escape_uri(NULL,
+                   + 2 * ngx_escape_uri(NULL,
                                 &e->line.data[e->captures[code->n]],
                                 e->captures[code->n + 1] - 
e->captures[code->n],
                                 NGX_ESCAPE_ARGS);
@@ -1016,9 +1016,11 @@
     ngx_memzero(&le, sizeof(ngx_http_script_engine_t));
 
     le.ip = code->lengths->elts;
+    le.line = e->line;
     le.request = e->request;
     le.captures = e->captures;
     le.ncaptures = e->ncaptures;
+    le.quote = e->quote;
 
     for (len = 0; *(uintptr_t *) le.ip; len += lcode(&le)) {
         lcode = *(ngx_http_script_len_code_pt *) le.ip;


 




Copyright © Lexa Software, 1996-2009.