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@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru