ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
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



 




Copyright © Lexa Software, 1996-2009.