Re: расширение return

Igor Sysoev igor на sysoev.ru
Пт Июн 18 14:10:58 MSD 2010


On Fri, Jun 18, 2010 at 02:05:17PM +0400, Igor Sysoev wrote:

> On Thu, Jun 17, 2010 at 02:20:52PM +0400, Igor Sysoev wrote:
> 
> > On Thu, Jun 17, 2010 at 02:15:22PM +0400, Igor Sysoev wrote:
> > 
> > > On Thu, Jun 17, 2010 at 11:07:12AM +0100, Valery Kholodkov wrote:
> > > 
> > > > О, можно будет сделать более универсальный eval:
> > > > 
> > > > eval $a {
> > > >     return 200 "blah";
> > > > }
> > > 
> > > А какая семантика ?
> > > 
> > > Вообще-то я не хочу ничего добавлять в этот мерзкий rewrite модуль,
> > > но return мне нравится. Да и понадобилось по работе.
> > 
> > Я бы ещё сделал
> > 
> >   location /old/ {
> >       location ~ ^/old(.+)$ {
> >           return  http://site.com$1;
> >       }
> > 
> > или
> > 
> >   location /old/ {
> >       location ~ ^/old(.+)$ {
> >           return  301  http://site.com$1;
> >       }
> > 
> > Вот такую личную неприязнь я испытываю к rewrite, что кушать не могу!
> 
> Итак, патч. Варианты использования:
> 
>     # старые
>     return  204;
>     return  404;
>     return  500;
> 
>     # новые
>     return  200;
>     return  200  "OK\n";
>     return  404  "not found\n";      # не перехватывается error_page
>     return  301  http://site.ru$request_uri;
>     return  302  http://site.ru$request_uri;
>     return  303  http://site.ru$request_uri;
>     return       http://site.ru$request_uri;     # по умолчанию 302
>     return       https://site.ru$request_uri;    # по умолчанию 302
>     return       $scheme://site.ru$request_uri;  # по умолчанию 302

Во втором параметре можно использовать переменные:

      return   404   '"$request_uri" not found\n';


-- 
Игорь Сысоев
http://sysoev.ru



Подробная информация о списке рассылки nginx-ru