nginx rewrite

Тема в разделе "Администрирование серверов", создана пользователем Sunday, 7 окт 2018.

Модераторы: mefish
  1. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    799
    Симпатии:
    330
    Прописываю такое перенаправление:

    Код:
    rewrite ^/id.php?gold-lion$ http://site.ru permanent;
    rewrite ^/own_flashplayer_plc.swf?file=/uploads/lep.mp3$ http://site.ru permanent;
    
    Но редирект не срабатывает.

    На других ссылках, подобных этой:
    Код:
    rewrite ^/index.php/main/download/2856$ http://site.ru permanent;
    всё работает нормально.

    Подскажите, что не так с первыми двумя вариантами и как правильно их прописать?
     
  2. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    268
    Симпатии:
    337
    /path?query

    location и rewrite работают только с /path, а query находится в переменной $args.
    Целиком же первоначальный запрос есть только в переменной $request_uri.

    Код:
    if ($request_uri = "/id.php?gold-lion") {
        return 301 http://site.ru/;
    }
    Или
    Код:
    if ($request_uri ~ ^/id\.php\?gold-lion$) {
        return 301 http://site.ru/;
    }
     
    Sunday нравится это.
  3. Sunday

    Sunday

    Регистр.:
    13 дек 2009
    Сообщения:
    799
    Симпатии:
    330
    @lag
    Подскажи ещё плиз, как универсально прописать правило для ссылки со слешем в конце и без него? Чтобы не плодить новые строки только ради одного слеша.
    Код:
    rewrite ^/index.php/main/download/2856$ http://site.ru permanent;
    rewrite ^/index.php/main/download/2856/$ http://site.ru permanent;
     
    Последнее редактирование: 5 ноя 2018
  4. lag

    lag

    Регистр.:
    13 окт 2014
    Сообщения:
    268
    Симпатии:
    337
    После / добавить квантификатор
    Код:
    rewrite ^/index.php/main/download/2856/?$ http://site.ru permanent;
     
    Sunday нравится это.