Re: nginx + rewrite (нужно упростить)
Sergey Shepelev
temotor на gmail.com
Пн Дек 21 20:12:43 MSK 2009
2009/12/21 grin <nginx-forum at nginx.us>:
> Всем привет,
>
> помогите упростить rewrite правила для nginx
>
>
> rewrite "^/(.+?)/:(s|b|p|c)([0-9]+)$" "/index.php?op=sections&act=show&$2=$3" last;
> rewrite "^/(.+?)/:(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+)$" "/index.php?op=sections&act=show&$2=$3&$4=$5" last;
> rewrite "^/(.+?)/:(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+)$" "/index.php?op=sections&act=show&$2=$3&$4=$5&$6=$7" last;
> rewrite "^/(.+?)/:(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+):(s|b|p|c)([0-9]+)$" "/index.php?op=sections&act=show&$2=$3&$4=$5&$6=$7&$8=$9" last;
>
>
> одной регуляркой это можно сделать? еще проблема, максимум может быть 9 переменных в правиле, т.е. если добавиться еще переменная, ничего не будет работать.
>
> спасибо.
Я могу ошибаться, но регекспами такая задача не решается.
Вам нужно заменять (:(s|b|p|c)(\d+))+ на &$n=$(n+1), но проблема в
том, что регекспы "не умеют считать".
Либо рекурсивно заменять :(s|b|p|c)(\d+) на &$1=$2, но регекспы не
умеют перезапускаться.
proxy_pass на микроскрипт, отдающий X-Accel-Redirect поможет сделать
любые странные замены.
>
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,32466,32466#msg-32466
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
Подробная информация о списке рассылки nginx-ru