Помогите разобраться с конструкцией перенаправления

eximer nginx-forum at nginx.us
Tue Feb 17 08:04:04 UTC 2015


Здравствуйте, помогите пож-ста разобраться с конфигурацией.

Описание:
Нужно все адреса передавать скрипту index.php в параметре link, при этом
если адрес начинается на rus|de|frn|eng то передавать этот префикс в
параметре lang.
И в link, и в lang нужно передавать параметры без стартового /. Если
(rus|de|frn|eng) отсутствуют в lang ничего не передавать.

Например:
1. http://example.org/eng/about
$request_key = about
$request_lang = eng

2. http://example.org/about
$request_key = about
$request_lang =

Текущая конфигурация сайта:

map $request_uri $request_key {
   default "";
   ~^/(?P<key>.+)$ $key;
}

server {

location / {
   try_files $uri $uri/ /index.php?lang=&link=$request_key;
}
location ~* ^/(rus|de|frn|eng)/ {
   try_files $uri $uri/ /index.php?lang=$request_lang&link=$request_key;
}
location ~ \.php$ {
   fastcgi_pass fpm;
   include fastcgi_params;
   fastcgi_index index.php;
}
}

p.s. Сейчас в request_key передается весь url (без стартового слеша).
Не могу понять, как отпарсить и передать в request_lang параметр
rus|de|frn|eng (если таковой присутствует),
при этом в request_key передать все остальное.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256711,256711#msg-256711



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