Re: Модификация fastcgi_param REQUEST_URI и множественные rewrite

Maxim Dounin mdounin at mdounin.ru
Thu Mar 20 16:55:58 UTC 2014


Hello!

On Thu, Mar 20, 2014 at 07:42:59PM +0300, Bogdan wrote:

> Добрый день.
> 
> Хочу иметь возможно многократно делать rewrite и получать в конце в
> параметр REQUEST_URI "последний" результат работы rewrite
> 
> Т.е. что-то такое:
> 
> URL: http://site.com/page-10
> 
> rewrite ^/page-(.*) /main/handler?page=$1;
> rewrite ^/main/.* /router;
> 
> location / {
>                 index index.php;
>                 try_files $uri $uri/ /index.php?$args;
> }
> 
>         location ~ \.php$ {
>                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
>                 # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
> 
>                 # With php5-fpm:
>                 fastcgi_pass backend;
>                 fastcgi_index index.php;
>                 fastcgi_connect_timeout 1;
>                 fastcgi_send_timeout 1;
>                 include fastcgi_params;
>  }
> 
> В результате я хотел бы получить при обращении к URL http://site.com/page-10
> в параметре REQUEST_URI передаваемому fastcgi-серверу значние вида:
> /router?page=10
> Сейчас в REQUEST_URI передаётся переменная $request_uri со значением
> "/page-10", а переменная $uri содержит "/index.php"
> 
> Подскажите пожалуйста, как это можно сделать, особенно хотелось бы обойтись
> без if .. set
> В крайнем случае устроил бы и всего один rewrite, но нужно так или иначе
> предавать в fastcgi модифицированный вариант URI.

Напишите отдельный location и передавайте туда то значение, 
которое вам больше нравится.

-- 
Maxim Dounin
http://nginx.org/



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