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_*