Re: Сокращение регекспа

Igor Sysoev igor на sysoev.ru
Пт Окт 29 14:51:28 MSD 2010


On Fri, Oct 29, 2010 at 06:44:45AM -0400, Halfi wrote:

> У кого-нибудь есть идеи, как можно
> сократить регекспу:
> [code]
>     location ~ /wyswyg/File/(.*)$ {
>         rewrite  /wyswyg/File/(.*)$  http://$http_host/wyswyg/file/$1;
>     }
>     location ~ /wyswyg/Image/(.*)$ {
>         rewrite  /wyswyg/Image/(.*)$ 
> http://$http_host/wyswyg/image/$1;
>     }
>     location ~ /wyswyg/Flash/(.*)$ {
>         rewrite  /wyswyg/Flash/(.*)$ 
> http://$http_host/wyswyg/flash/$1;
>     }
>     location ~ /wyswyg/Media/(.*)$ {
>         rewrite  /wyswyg/Media/(.*)$ 
> http://$http_host/wyswyg/media/$1;
>     }
> [/code]
> Кода достаточно много, все что мог
> сократил, работа nginxa ускорилась, хочу
> еще это оптимизировать, никак не могу
> додкматься, как можно сократить все в
> один регексп.. Существет ли способ
> перевести переменную в нижний регистр??
> В таком случае можно было бы написать
> так:
> 
> [code]
>     location ~ /wyswyg/(File|Image|Flash|Media)/(.*)$ {
>         rewrite  /wyswyg/(File|Image|Flash|Media)/(.*)$ 
> http://$http_host/wyswyg/($1 - как-то преобразовать в
> нижний регистр)/$2;
>     }
> 
> [/code]

0.8.53:

http {
    map  $one   $two {
         default  "";
         File   file;
         Image  image;
         Flash  flash;
         Media  media;
    }

    server {
        location /wyswyg/ {
            location ~ /wyswyg/(?<one>[A-Z].+?)(?<tail>/.*)$ {
                return  302  http://$http_host/wyswyg/$two$tail;
            }
            ...
        }


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



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