rewrite_bug?
Igor Sysoev
is at rambler-co.ru
Mon Aug 28 00:42:24 MSD 2006
On Fri, 25 Aug 2006, Andrey I. Kislyak wrote:
> обнаружилась такая особенность модуля rewrite
>
> при таком реврайте:
> rewrite ^/2/(.*) /1/2.php?f=$1&$query_string? permanent;
>
> с обычными запросами вида
> http://example/2/5.jpg
>
> реврайтится на
> http://example/1/2.php?f=5.jpg&
>
>
> но если там будет имя вида:
> http://example/2/thumb_i1723-%C4%D7%D5%DB%CB%C1-%D2%C1%D3%D0.jpg
>
> почему-то появляется перенаправление на:
>
> http://example/1/2.php?f=thumb_i1723-%c4%d7%d5%db%cb%c╦├'f┤'
>
> отсюда вопрос как это можно сделать так чтоб rewrite проходил нормальному?
>
> Ниже вывод HTTP Headers:
>
> http://example/2/thumb_i1723-%C4%D7%D5%DB%CB%C1-%D2%C1%D3%D0.jpg
>
> GET /2/thumb_i1723-%C4%D7%D5%DB%CB%C1-%D2%C1%D3%D0.jpg HTTP/1.1
> Host: example
> User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.13)
> Gecko/20060615
> Accept:
> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
> Accept-Language: ru,en-us;q=0.7,en;q=0.3
> Accept-Encoding: gzip,deflate
> Accept-Charset: KOI8-R,utf-8;q=0.7,*;q=0.7
> Keep-Alive: 300
> Connection: keep-alive
> Cookie: __utma=108842456.864384593.1155563533.1155563533.1155563533.1;
> __utmz=108842456.1155563533.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none);
> phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bi%3A-1%3B%7D
>
> HTTP/1.x 301 Moved Permanently
> Server: nginx/0.3.59
> Date: Thu, 24 Aug 2006 08:35:32 GMT
> Content-Type: text/html
> Content-Length: 185
> Location: http://example/1/2.php?f=thumb_i1723-%c4%d7%d5%db%cb%c╦├'f┤'
> Connection: keep-alive
Прилагаемый патч исправляет ошибку. А вместо
-rewrite ^/2/(.*) /1/2.php?f=$1 permanent;
лучше писать
+rewrite ^/2/(.*) /1/2.php?f=$1&$query_string? permanent;
тогда не будет пустого "&", если нет аргументов в оригинальном запросе.
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/ngx_http_script.c Thu Aug 10 19:16:06 2006
+++ src/http/ngx_http_script.c Mon Aug 28 00:37:20 2006
@@ -687,9 +687,11 @@
ngx_memzero(&le, sizeof(ngx_http_script_engine_t));
le.ip = code->lengths->elts;
+ le.line = e->line;
le.request = r;
le.captures = e->captures;
le.ncaptures = e->ncaptures;
+ le.quote = code->redirect;
len = 1; /* reserve 1 byte for possible "?" */
More information about the nginx-ru
mailing list