rewrite q
Igor Sysoev
is at rambler-co.ru
Wed Sep 28 17:53:23 MSD 2005
On Wed, 28 Sep 2005, Dmitry Kondratyev wrote:
> Igor Sysoev wrote:
>
>>> Подскажите где я туплю. :-)
>>> rewrite ^/dir/page.php\?param=(.+)$ http://$1.site.ru/ permanent;
>>>
>>> Почему-то не работает.
>>
>>
>> rewrite проверят только URI без агрументов. В данном случае можно
>> сделать так:
>>
>> location = /dir/page.php {
>> if ( $query_string ~ "^param=(.+)$" ) {
>> set $redirect $1;
>> rewrite ^ http://$redirect.site.ru/? permanent;
>> }
>> }
>
> Спасибо, помогло. Только не понял зачем вопрос в конце
> http://$redirect.site.ru/
> Вроде и без него всё работает. Теперь другая проблема:
>
> location /dir/page.php {
> if ($query_string ~ "^param1=(.+)¶m2=value2$" ) {
> set $redirect $1;
> rewrite ^ http://site/page.php?param=$redirect permanent;
> }
> }
>
> Проблема состоит в том, что итоговый урл получается
> http://site/page.php?param=$value1?param1=value1¶m2=value2 вместо
> http://site/page.php?param=$value1
Должно быть не
http://site/page.php?param=$value1___?___param1=value1¶m2=value2
http://site/page.php?param=$value1___&___param1=value1¶m2=value2
Так ?
Вот для этого и нужен "?" в конце:
http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#rewrite
------------
Если в строке замены указаны аргументы, то предыдущие аргументы запроса
добавляются после них. Можно отказаться от этого добавления, указав в
конце строки замены знак вопроса:
rewrite ^/users/(.*)$ /show?user=$1? last;
------------
Игорь Сысоев
http://sysoev.ru
More information about the nginx-ru
mailing list