Nginx - перенаправление 301 для страниц с определенным GET-параметром на ту же страницу без получения параметров - PullRequest
0 голосов
/ 05 июня 2019

У меня есть

  • много страниц, которые были проиндексированы поисковыми системами с дрянным GET-параметром, например _escaped_fragment_ (для получения дополнительной информации об экранированных фрагментах см. Справочная страница Яндекса )
  • nginx в качестве обратного прокси-сервера перед многими различными приложениями внешнего интерфейса

Поэтому мне нужно получить перенаправление 301 только для всех этих страниц с некоторым GET-параметром на те же страницы, нобез каких-либо параметров получения.Например,

example.com/some/long/path?_escaped_fragment_=

следует перенаправить 301 на

example.com/some/long/path

. Я могу сделать это, добавив эту логику в каждое приложение внешнего интерфейса, или я могу сделать это в конфигурации nginx.Я предпочитаю использовать второй вариант.

Потенциальное решение может включать

1 Ответ

0 голосов
/ 05 июня 2019

Я исправил свою первоначальную проблему таким образом

  • добавить код ниже к моему http context, чтобы определить путь запроса uri без аргументов от $request_uri (здесь мы используем модуль карты )

    map $request_uri $request_uri_path {
        "~^(?P<path>[^?]*)(\?.*)?$"  $path;
    }
    
  • добавить приведенный ниже код в мой server context, чтобы сделать 301 redirect из страниц с _escaped_fragment_ в параметрах GET на тех же страницах без каких-либо параметров GET (здесь мы используем модуль перезаписи )

    if ($args ~*  "_escaped_fragment_") {
        rewrite ^ $scheme://$host$request_uri_path? permanent;
    }
    

И это работает для меня.

...