Nginx rewrite ABO.cms

Igor Sysoev is at rambler-co.ru
Thu Mar 5 00:21:14 MSK 2009


On Mon, Mar 02, 2009 at 07:02:36PM +0300, Борис Долгов wrote:

> Нет, никогда не пишите в nginx if (!-e $request_filename) {
> Используйте error_page в старом или
> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files в новом
> nginx'e.

На данный момент без "if" не обойтись, но если взять патч из письма
с сабжектом "captures in regex location", то можно так:

location ~ ^/(rus|ukr|blr|de|frn|eng)*/?(.+)?$ {

    error_page   404  = /index.php?lang=$1&link=$2;
}

Хотя regex странный:
1) зачем "*" после "(rus|ukr|blr|de|frn|eng)" ?
2) "/?([^?]+)?$" тоже странная конструкция.

> 2 марта 2009 г. 15:36 пользователь Un Lexx <unlexx at gmail.com> написал:
> 
> > для апача правила выглядят как
> > RewriteCond %{REQUEST_FILENAME} !-f
> > RewriteCond %{REQUEST_FILENAME} !-d
> > RewriteRule ^(rus|ukr|blr|de|frn|eng)*/?([^?]+)?$
> > index.php?lang=$1&link=$2 [NC,QSA,L]
> >
> >  для nginx
> > if (!-e $request_filename) {
> >        rewrite ^(rus|ukr|blr|de|frn|eng)*/?([^?]+)?$
> > index.php?lang=$1&link=$2 last;
> >    }
> >
> > Правильно?
> >
> >
> 
> 
> -- 
> С уважением, Борис Долгов.
> icq 77556665
> e-mail boris at dolgov.name

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





More information about the nginx-ru mailing list