ПРОЕКТЫ 


  АРХИВ 


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: Перенаправление



On Monday 12 August 2013 19:22:07 Sergey Kobzar wrote:
> On 08/12/13 18:14, Валентин Бартенев wrote:
> > On Monday 12 August 2013 18:50:49 Sergey Kobzar wrote:
> >> location / {
> >> 
> >>       rewrite ^/\?portfolio=hungary /en/europe/hungary last;
> >>       rewrite_log on;
> >>       
> >>       try_files $uri $uri/ /index.php?q=$request_uri;
> >> 
> >> }
> >> 
> >> 
> >> Запрашиваемый URL:
> >> 
> >> http://site.com/en/?portfolio=hungary
> >> 
> >> В логе:
> >> 
> >> 2013/08/12 17:44:46 [notice] 21714#0: *1 "^/\?portfolio=hungary" does
> >> not match "/", client: 1.1.1.1, server: site.com, request: "GET
> >> /?portfolio=hungary HTTP/1.1", host: "site.com"
> >> 
> >> Почему не редиректит на /en/europe/hungary?
> >> 
> >> Или решается только через $args + if ?
> > 
> > Разумеется параметры не учитываются при сопоставлении URI в rewrite.
> 
> Т.е. if + $args? Может есть элегантный способ? В настледство досталось
> сотни таких URL'ов - нужно безболезненно перейти на новую реализацию...
> 

$args служит для других целей обычно, и правильно написать
регулярку с $args - задача столь же сложная, как если бы они
учитывались в rewrite или location.  Все почему-то забывают,
что параметры запроса могут идти в любой последовательности
и среди них могут быть ещё параметры, которые не ожидаются.

Правильно: if + $arg_*

Для сотен: map + $arg_*

--
Валентин Бартенев
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.