rewrite rul

Igor Sysoev igor на sysoev.ru
Ср Июл 20 19:04:38 UTC 2011


On Wed, Jul 20, 2011 at 01:59:16PM -0400, yokodzun wrote:
> Пытаюсь сконвертить следующие rewrite
> правила из синтаксиса mod_rewrite в
> синтаксис Nginx:
> 
> RewriteBase /
>   
>   RewriteCond %{REQUEST_FILENAME} !-f
>   RewriteCond %{REQUEST_FILENAME} !-d
>   RewriteCond %{REQUEST_FILENAME} !-l
>   # Administration URL rewriting.
>   RewriteRule ^admin(.*)$ admin/index.php?$1 [L,QSA]
>   
>   RewriteCond %{REQUEST_FILENAME} !-f
>   RewriteCond %{REQUEST_FILENAME} !-d
>   RewriteCond %{REQUEST_FILENAME} !-l
>   # Main URL rewriting.
>   RewriteRule ^(.*)$ index.php?PAGE=$1 [L,QSA]
> 
> второе правило удалось застравить
> работать, первое - никак.
> 
> конфиг такой:
> 
> server {
>         listen       80;
>         server_name domain.tld
>         location /      {
>                 root  /v/http/domain.tld;
>                 try_files $uri $uri/ @rewrite;
>                 autoindex    off;
>         }
> 
>                 location @rewrite {
>                 rewrite ^/admin/(.*)$ /admin/index.php?$1;
>                 rewrite ^/(.*)$ /index.php?PAGE=$1;
>                 }
> 
> 
> location ~ \.php$       {
>                 fastcgi_pass    unix:/tmp/php-fpm.sock;
>                 fastcgi_index  index.php;
>                 fastcgi_param   DOCUMENT_ROOT /v/http/domain.tld;
>                 fastcgi_param   SCRIPT_FILENAME
> /v/http/domain.tld$fastcgi_script_name;
>                 include        fastcgi_params;
>                         }
>         }
> 
> Где я ошибся? Почему для /admin/ не
> срабатывает правило?

Не надо rewrite. Тогда всё будет работать:

server {
        listen       80;
        server_name domain.tld

        root  /v/http/domain.tld;

        location ~ \.php$ {
            fastcgi_pass    unix:/tmp/php-fpm.sock;
            fastcgi_param   DOCUMENT_ROOT /v/http/domain.tld;
            fastcgi_param   SCRIPT_FILENAME
                            /v/http/domain.tld$fastcgi_script_name;
            include         fastcgi_params;
        }

        location ~ ^/admin/(.*)$ {
            try_files $uri $uri/ /admin/index.php?$1;
        }

        location ~ ^/(.*)$ {
            try_files $uri $uri/ /index.php;
        }
}


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



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