Re: регулярное выражение

Igor Sysoev igor на sysoev.ru
Ср Мар 28 05:17:05 UTC 2012


On Tue, Mar 27, 2012 at 10:45:41PM +0400, r3borned at gmail.com wrote:
> Приветствую.
> Есть вот такое дело в конфиге:
> location ~ ^/((240|110)x(320|120))/(.*pic-.*)$ {
>             alias /www/mysite.ru/$4;
>             image_filter resize $2 $3;
>         }
> Собственно, все работает, но хочется кое-что улучшить. А именно: здесь можно юзать 4 комбинации: 240х320, 240х120, 110х320, 110х120 - они все попадают под регулярку. А я хочу, чтобы попадало только 240х320 и 110х120. Да, можно переписать ее, но в то же время мне нужно чтобы ширина и высота были в $2 и в $3, чтобы передать их в image_filter.
> Что можете посоветовать в такой ситуации? Как оптимально решить задачу?

Если решать задачу действительно оптимально, то есть, чтобы не писать
по-меньше, как часто думают про оптимально, а чтобы поддерживать
конфигурацию было проще, то от регулярных выражений нужно отказаться
или же локализовать их:

location /240x320/ {
    location ~ ^/240x320/(.*pic-.*)$ {
        alias /www/mysite.ru/$1;
        image_filter resize 240 320;
    }
    return 404;
}

location /110x120/ {
    location ~ ^/110x120/(.*pic-.*)$ {
        alias /www/mysite.ru/$1;
        image_filter resize 110 120;
    }
    return 404;
}


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



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