Re: Преобразование настроек mod rewrite

Igor Sysoev igor на sysoev.ru
Вс Июн 5 12:16:59 MSD 2011


On Sun, Jun 05, 2011 at 03:58:01AM -0400, hdcoder wrote:
> Пользовался на VDS apache, теперь перешел на
> nginx/1.0.4. Не могу сообразить как лучше
> преобразовать конфигурацию mod_rewrite под
> синтаксис nginx. Пожалуйста помогите.
> 
> Вот что было для apache:
> ---
> RewriteRule ^([a-z]+)-([0-9a-z]+)-([0-9a-z_]*)-?(.*)$ $1-$4?$2=$3
> [NC,QSA]
> RewriteRule ^([a-z]+)-?\.html$ $1.php [NC,L,QSA]
> ---
> На всякий случай говорю, что использую
> сайтовый движок Cotonti.
> 
> Сейчас в качестве временного решения
> прописал настройки nginx так:
> ---
> rewrite "^/([a-z]+)\.html$" /$1.php last;
> rewrite "^/([a-z]+)-([a-z]+)-([0-9a-z_]*)\.html$" /$1.php?$2=$3 last;
> rewrite "^/([a-z]+)-([a-z]+)-([0-9a-z_]*)-([a-z]+)-([0-9a-z_]*)\.html$"
> /$1.php?$2=$3&$4=$5 last;
> rewrite
> "^/([a-z]+)-([a-z]+)-([0-9a-z_]*)-([a-z]+)-([0-9a-z_]*)-([a-z]+)-([0-9a-z_]*)\.html$"
> /$1.php?$2=$3&$4=$5&$6=$7 last;
> rewrite
> "^/([a-z]+)-([a-z]+)-([0-9a-z_]*)-([a-z]+)-([0-9a-z_]*)-([a-z]+)-([0-9a-z_]*)-([a-z]+)-([0-9a-z_]*)\.html$"
> /$1.php?$2=$3&$4=$5&$6=$7&$8=$9 last;
> ---
> 
> Оно работает, но, согласитесь, метод
> довольно тупой. Параметров в строке
> может оказаться и больше. Хотелось бы
> более изящного и универсального
> решения.

Метод, безусловно, довольно тупой.
А программистам Cotonti к 2009 году следовало бы уже понять, что в 21 веке
перекладывание разбора запроса на плечи рекурсивных RewriteRules - это
далеко не самое изящное и универсальное решение. Да и не быстрое, кстати.

На nginx тоже можно такое сообразить до 50 итераций, но я, увы, за всеми
этими скобочками, звёздочками и плюсиками теряю смысл написанного.
Любят же люди на ровном месте создавать проблемы.


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



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