Re: Отсутствие urlencode в результирующем url при rewrite

Denis F. Latypoff denis на gostats.ru
Вт Дек 29 15:49:59 MSK 2009


Hello Alexander,

Tuesday, December 29, 2009, 6:28:55 PM, you wrote:

> Все привет!

> Мы недавно перешли с лайти на nginx и вылезла интересная проблема с
> различным поведением при rewrite.

> Вот такое правило:

> rewrite ^/download/([^/]+)/(.+)/$
> /index.php/download/?hash=$1&filename=$2        last;

> работает как надо, но к аргументам  $1 и $2 не применяется urlencode, что
> приводит к проблемам в случае если в $2, например, есть апостроф "&". В
> итоге query_string получается битая (имя файла обрывается и появляется еще
> одна переменная). Как можно обойти эту проблему и есть ли способ делать
> url_encode для аргументов в результирующем url?

> ***
> Саша Радостин

1) Народ, а зачем вам вообще rewrite'ы?

location ~ ^/download/(?<hash>[^/]+)/(?<filename>.+)/$ {

    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_param SCRIPT_NAME     /index.php;
    fastcgi_param PATH_INFO       /download/;
    fastcgi_param QUERY_STRING    hash=$hash&filename=$filename;
    fastcgi_pass  ...;
    include       fastcgi_params;
}

2) С какого nginx должен делать что-то с captures? Я бы с таким же
   успехом мог ругаться на nginx: "Почему nginx не далает md5() над
   переменными? А то я юзал до этого другую софтину, там это было
   зашито в код".

-- 
Best regards,
 Denis                            mailto:denis at gostats.ru




Подробная информация о списке рассылки nginx-ru