Re: Перенос правил с Apache для nginx
Igor Sysoev
igor at sysoev.ru
Mon Sep 10 12:43:39 UTC 2012
On Mon, Sep 10, 2012 at 07:44:05AM -0400, Darwin wrote:
> Андрей Василишин Wrote:
> -------------------------------------------------------
> > 10.09.2012 12:53, Darwin пишет:
> > > Привет всем. Помогите пожалуйста правильно конвертировать правила
> > для NGINX,
> > > так как со стандартного конверта они не работают =(
> > >
> > > ### Редиректы с site.ru/category/index.php на site.ru/category/ и
> > др.
> > > RewriteCond %{REQUEST_FILENAME} !-f
> > > RewriteCond %{REQUEST_FILENAME} !-d
> > > RewriteCond %{REQUEST_URI} (.*) index\.php$
> > > RewriteRule ^(.*) index\.php$ $1 [R=301,L]
> > >
> > > ### Редиректы с index.php на сайт
> > > RewriteBase /
> > > RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
> > > RewriteRule ^index\.php$ / [R=301,L]
> > > RewriteCond %{REQUEST_FILENAME} !-f
> > > RewriteCond %{REQUEST_FILENAME} !-d
> > > RewriteRule . /index.php [L]
> >
> >
> > http://nginx.org/en/docs/http/converting_rewrite_rules.html#converting
> > _mongrel_rules
> >
> > к примеру конструкция
> >
> > RewriteCond %{REQUEST_FILENAME} !-f
> > RewriteCond %{REQUEST_FILENAME} !-d
> > RewriteRule ^(.*)$ ./index.php
> >
> > в нгинкс выглядит так:
> >
> > try_files $uri $uri/ /index.php;
>
> Трудно что либо понять... ну да ладно, разберемся...
Понять действительно трудно. Например, что должно делать вот это:
RewriteCond %{REQUEST_URI} (.*) index\.php$
при том, что параметров у RewriteCond - два. К чему "index\.php$"
Может быть там "(.*)/index\.php$" ?
Тогда как-то так:
location / {
try_files $uri $uri/ @fastcgi;
}
location ~ "^(?<DIR>.*/)index\.php$" {
internal;
error_page 404 =301 http://$host$DIR;
fastcgi_pass ...
...
}
location @fastcgi {
fastcgi_pass ...
...
}
--
Igor Sysoev
Подробная информация о списке рассылки nginx-ru