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