Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: эмуляция if/else
On Thu, Apr 24, 2008 at 09:02:31AM +0000, David Mzareulyan wrote:
> Так никто на вопрос-то и не ответил -- про last/break. А место в самом деле
> не очень понятное. Вот на
> http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#rewrite
> написано:
>
> ===============
> Если же эти директивы поместить в location /download/, то нужно заменить
> флаг last на break, иначе nginx сделает 10 циклов и вернёт ошибку 500:
>
> location /download/ {
> rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
> rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
> return 403;
> }
> ===============
>
> Во-первых, ПОЧЕМУ last вызовет зацикливание? После первого же рерайта
> запрос перестанет попадать в паттерн -- там же media заменится на mp3.
Да, там ошибка - зацкливания не будет, а будет 403.
> Во-вторых, куда всё-таки пойдёт управление после break? На return? Или
> поскольку return тоже "директива ngx_http_rewrite_module" -- дальше пойдёт
> отдача из этой локации статикой?
Второе - пойдёт отдача статики.
--
Игорь Сысоев
http://sysoev.ru
|