Форумы / National / Russian / Тех. поддержка / Rewrite в Nginx для правильных ссылок

Boss
#29771 02.06.2011 05:04

Может быть кто-то уже имел опыт настройки Nginx под красивые ссылке в Cotonti? Смысл в том, что Apache не используется на сервере вообще, соответвенно mod_rewrite недоступен.

Для 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]
Их и необходимо преобразовать под синтексис Nginx.
Что-то вроде этого должно быть:
rewrite  ^(.*)([a-z]+)-([0-9a-z]+)-([0-9a-z_]*)-?(.*)$ $1$2-$5?$3=$4 last;
rewrite  ^(.*)([a-z]+)-?\.html$ $1$2.php last;
В текущем виде не работает первая строка.

 

Добавлено 11 часа спустя:

Копаться некогда. Пока сделал тупо, но главное, оно работает:

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;


Добавлено 4 дня спустя:

На сайте разработчиков Nginx подсказали как правильно преобразовать две строчки Apache написанные выше в синтексису Nginx. Вот оно:

location / {
rewrite ^(/[a-z]+)-([0-9a-z]+)-([0-9a-z_]*)-?(.*)$ $1-$4?$2=$3;
rewrite ^(/[a-z]+)-?\.html$ $1.php last;
}

Проверенно, работает. Вот ссылка на обсуждение http://forum.nginx.org/read.php?21,204040

Прошу обратить внимание разработчиков Cotonti на данное обсуждение, поскольку там затронуты явные минусы реализации работы со ссылками в движке. Советы непосредственно от автора Nginx. По-моему стоит прислушатся.

Отредактировано: Boss (06.06.2011 15:47, 12 лет назад)