rewrite q

Igor Sysoev is at rambler-co.ru
Wed Sep 28 18:23:21 MSD 2005


On Wed, 28 Sep 2005, Dmitry Kondratyev wrote:

> Igor Sysoev wrote:
>
>>> Спасибо, помогло. Только не понял зачем вопрос в конце 
>>> http://$redirect.site.ru/
>>> Вроде и без него всё работает. Теперь другая проблема:
>>> 
>>> location /dir/page.php {
>>>     if ($query_string ~ "^param1=(.+)&param2=value2$" ) {
>>>       set  $redirect  $1;
>>>       rewrite  ^   http://site/page.php?param=$redirect  permanent;
>>>     }
>>> }
>>> 
>>> Проблема состоит в том, что итоговый урл получается
>>> http://site/page.php?param=$value1?param1=value1&param2=value2 вместо
>>> http://site/page.php?param=$value1
>> 
>> 
>> Должно быть не
>> 
>> http://site/page.php?param=$value1___?___param1=value1&param2=value2
>> http://site/page.php?param=$value1___&___param1=value1&param2=value2
>> 
>> Так ?
>> 
>> Вот для этого и нужен "?" в конце:
>> http://sysoev.ru/nginx/docs/http/ngx_http_rewrite_module.html#rewrite
>> 
>> ------------
>> Если в строке замены указаны аргументы, то предыдущие аргументы запроса
>> добавляются после них. Можно отказаться от этого добавления, указав в
>> конце строки замены знак вопроса:
>> 
>>     rewrite  ^/users/(.*)$  /show?user=$1?  last;
>> ------------
>
>
> Перенесу общение сюда, потому как достало заменять название сайта и страниц. 
> :-)

Куда ты хотел перенести общение ? По-моему, мы остались там же.

> Смотри, есть:
>                location /default/do.php {
>                       if ($query_string ~ "^aid=(.+)(&|$)" ) {
>                                set  $param  $1;
>                                rewrite  ^ 
> http://photofile.ru/album.php?id=$param?  permanent;
>                        }
>
>                       if ($query_string ~ "^id=(.+)(&|$)" ) {
>                                set  $param  $1;
>                                rewrite  ^ 
> http://photofile.ru/large_image.php?id=$param?  permanent;
>                        }
>                }
>
> Когда дёргаешь http://photofile.ru/default/do.php?id=12331158&type=1
> nginx сейчас возвращает локейшн 
> http://photofile.ru/large_image.php?id=12331158&type=1
> а хотелось бы http://photofile.ru/large_image.php?id=12331158
> Что делать? :-)

       if ($query_string ~ "^id=([^&]+)(&|$)" ) {
или
       if ($query_string ~ "^id=(.+?)(&|$)" ) {


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





More information about the nginx-ru mailing list