Re: Регекс локейшены с русскими именами
RedRat
nginx-forum на nginx.us
Ср Июл 20 13:48:52 UTC 2011
Maxim Dounin Пишет:
-------------------------------------------------------
> Для case-insensitive matching'а UTF-8 строк можно
сделать так
> (если конечно pcre собран с UTF-8 и т.п.):
>
> location ~* (*UTF8)^/старый: {
> ...
> }
>
> Но я *не* рекомендую так делать в общем
случае, ибо
> на запросах с uri не являющимся
валидной utf-8 строкой будет
> возвращена 500-я ошибка.
>
> Безопаснее решение - написать
несколько
> статических location'ов или регулярное
выражение с
> альтернативами, i.e.
>
> location /Старый: { ... }
> location /старый: { ... }
>
> location ~ ^/(?:С|с)тарый: { ... }
Да, наверное, так и сделаю. Просто
хотелось одним локейшеном обойтись,
но тут лучше перебдеть. Спасибо за
совет!
> Директива rewrite сама по себе выполняет
регулярное выражение,
> соответственно $2 будет браться из
него (последнего выполненного).
> Можно сделать с использованием
именованных выделений, так:
>
> location ~ ^/старый:(?<page>.*)$ {
> rewrite ^ /новый:$page permanent;
> }
Я просто думал, что раз в первой части
rewrite не используется выделение,
то оно возьмётся из локейшена. Ещё раз
спасибо, теперь всё ясно.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,212675,212682#msg-212682
Подробная информация о списке рассылки nginx-ru