Re: Перенаправление

Sergey Kobzar sergey.kobzar at itcraft.org
Mon Aug 12 15:37:24 UTC 2013


On 08/12/13 18:32, Валентин Бартенев wrote:
> 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_*

У меня число перестановок кончно, т.к. старые URL остались только в 
поисковиках.

Идея понятна. Спасибо.


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



Подробная информация о списке рассылки nginx-ru