Подскажите правило для редиректа

Igor Sysoev is at rambler-co.ru
Fri Apr 3 20:20:49 MSD 2009


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





More information about the nginx-ru mailing list