ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: rewrite q



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




 




Copyright © Lexa Software, 1996-2009.