Re: nginx, uri и иврит
Maxim Dounin
mdounin на mdounin.ru
Вт Авг 25 12:17:46 UTC 2015
Hello!
On Tue, Aug 25, 2015 at 07:42:10AM -0400, Denis76 wrote:
> День добрый. Нужно написать реврайт для некоторый uri на иврите.
> В логе nginx обращения представлены в виде
> /%d7%a1%d7%9c%d7%99%d7%97%d7%94,+%d7%9e%d7%94+%d7%94%d7%a9%d7%a2%d7%94?!.html
>
> однако, если делаю что-то типа такого для теста:
> if ($uri =
> "/%d7%a1%d7%9c%d7%99%d7%97%d7%94,+%d7%9e%d7%94+%d7%94%d7%a9%d7%a2%d7%94?!.html")
> {
> return 403;
> }
> или
> map "$uri" $bad {
> "/%D7%A1%D7%9C%D7%99%D7%97%D7%94,+%D7%9E%D7%94+%D7%94%D7%A9%D7%A2%D7%94?!.html"
> "1";
> }
>
> то правила не срабатывают. Как я понимаю проблема в экранировании некоторых
> символов, коих тут вижу ",%!?." какие из них должны быть экранированы и дело
> ли вообще в этом?
Значение переменной $uri - в раскодированном виде, т.е. проверять
надо текст, а не %-escaped строку. Если хочется проверять
ровно то значение, которое передал клиент, то следует использовать
переменную $request_uri (note: включает в себя аргументы запроса).
Документация тут:
http://nginx.org/r/$uri
http://nginx.org/r/$request_uri
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru