ПРОЕКТЫ 


  АРХИВ 


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: Подскажите правило для редиректа



On Fri, Apr 03, 2009 at 08:13:20PM +0400, Andrew Kopeyko wrote:

> On Fri, 3 Apr 2009, Andrew Kopeyko wrote:
> 
> >On Fri, 3 Apr 2009, Peter wrote:
> >
> >>Есть папка foto с картинками, названия файлов вида 123456.jpg и
> >>sm_123456.jpg
> >>Хочу разложить все картинки в две папки sm и big, а внутри этих папок ещё 
> >>по
> >>10 папкам - 0, 1, 2, 3... 9 по принципу "название папки = последняя цифра 
> >>в
> >>названии файла". Т.е. обращения к файлу /foto/123456.jpg должны
> >>редиректиться (с 302-м редиректом)  на /foto/big/6/123456.jpg, а
> >>/foto/sm_123456.jpg на /foto/sm/6/sm_123456.jpg
> >
> >Зачем внешний редирект, когда можно обойтись rewrite'ом?
> >
> >>Подскажите, как записать такую конструкцию?
> >
> >Как-то так :
> 
> sorry, не проверил после copy-paste
> 
> >location /foto/ {
> -    rewrite  (.*)\/([0-9]{5})(([0-9])\.jpg  $1/big/$3/$2$3.jpg  break;
> +    rewrite  (.*)\/([0-9]{5})([0-9])\.jpg  $1/big/$3/$2$3.jpg  break;
> -    rewrite  (.*)\/sm_([0-9]{5})(([0-9])\.jpg  $1/sm/$3/sm_$2$3.jpg  break;
> +    rewrite  (.*)\/sm_([0-9]{5})([0-9])\.jpg  $1/sm/$3/sm_$2$3.jpg  break;
> >   ...
> >}

А ещё лучше взять современный nginx и

   location ~ ^(/foto/)(\d{5})(\d)\.jpg$ {
       alias   /path/to$1/big/$3/$2$3.jpg;
   }

   location ~ ^(/foto/)(sm_\d{5})(\d)\.jpg$ {
       alias   /path/to$1/sm/$3/$2$3.jpg;
   }


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



 




Copyright © Lexa Software, 1996-2009.