ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Нужна помощь с rewrite



On Wed, Feb 20, 2008 at 10:59:07AM +0300, Prohor Utishev wrote:

> После многочисленных попыток так и не удалось переделать rewrite Apache 
> в nginx.
> 
> В .htaccess имеем:
> 
> RewriteEngine  On
> RewriteBase    /
> RewriteCond    %{REQUEST_URI}          ^/$     [OR]
> RewriteCond    %{REQUEST_FILENAME}     !-d
> RewriteCond    %{REQUEST_FILENAME}     !-s
> RewriteCond    %{REQUEST_FILENAME}     !-l
> RewriteRule    (.*)                    /index.php/$1
> 
> В  итоге пришел к рабочей конструкции:
> 
>        root          /home/www;
>        if (!-e $request_filename) {
>        rewrite ^(.*)$ /index.php?q=$1 last;
>        }
> 
> но нужно получить как в .htaccess /index.php/$1, а такой редирект отдаёт 
> 404 ошибку.

А куда это потом уходит ? Если в FastCGI, то, скорее всего, $1 нужно
засовывать в PATH_INFO. Я бы это чудо PHP-мысли переписал бы так:

        location = / {
            fastcgi_pass   ...
            fastcgi_param  SCRIPT_FILENAME  /home/www/index.php;
            ...
        }

        location / {
            ...
            error_page 404 = @fallback;
        }

        location @fallback {
            fastcgi_pass   ...
            fastcgi_param  SCRIPT_FILENAME  /home/www/index.php;
            fastcgi_param  PATH_INFO        $uri;
            ...
        }


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



 




Copyright © Lexa Software, 1996-2009.