Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: rewrite location in the middle of the path
Hello!
On Fri, Nov 30, 2012 at 11:06:39AM -0500, nrsk wrote:
> Здравствуйте!
>
> Столкнулась с задачей: необходимо преобразовать url типа
> /my-context/id/param1,param2,paramN в url типа
> /dev/folder/id_param1,param2,paramN. Id может быть только числом.
> Попробовала написать rewrite для данного преобразования.
> location /my-context/([0-9]+)/(.*)$ {
> rewrite /dev/folder/$1_$2/ permanent;
> }
> Итоговую строку получила в виде /dev/folder/id/param1,... etc.
> В чем может быть проблема с заменой символов "/" на "_" ?
Я вижу как минимум три проблемы:
1. В location написано регулярное выражение, но модификатора "~"
не стоит. В результате location будет интерпретироваться как
обычная строка.
2. В директиве rewrite пропущено регулярное выражение. Синтаксис
директивы rewrite выглядит так:
rewrite regex замена [флаг];
Подробности см. http://nginx.org/r/rewrite/ru.
3. Кроме того, надо учитывать, что $1 и т.п. берутся из последнего
совпавшего регулярного выражения, т.е. в случае директивы rewrite -
из регулярного выражения в этом самом rewrite'е.
Правильно как-то так:
location /my-context/ {
rewrite ^/my-context/([0-9]+)/(.*)$ /dev/folder/$1_$2/ permanent;
}
--
Maxim Dounin
http://nginx.com/support.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|