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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru