wpstart.ru wordpress wpstart.ru

Как закрыть от индексации страницы с GET-параметрами в WordPress

Страницы с параметрами в URL — типичная причина дублей в WordPress. Один и тот же контент может открываться как /catalog/, /catalog/?sort=price, /catalog/?utm_source=... или /blog/?page=2. Для пользователя это разные адреса, а для поисковика — часто почти одинаковые страницы. Если такие URL начинают попадать в индекс, сайт быстро получает мусор в отчётах и распыление веса.

Ниже — рабочая схема: как найти проблемные параметры, чем закрывать их от индексации, когда достаточно noindex, а когда лучше убрать саму генерацию дубля. Отдельно разберём, как проверить результат и где обычно ошибаются.

Когда проблема действительно есть

Не каждый URL с параметром нужно закрывать. Иногда параметр нужен для работы сайта: сортировка, фильтр, пагинация, поиск, технические метки. Проблема начинается, когда такие адреса:

  • попадают в sitemap или внутренние ссылки;
  • отдают тот же контент, что и каноническая страница;
  • индексируются массово через фильтры, UTM-метки и служебные параметры;
  • создают сотни почти одинаковых страниц в Search Console.

Как быстро диагностировать дубли

Сначала проверьте, какие параметры реально живут на сайте. Самый простой путь — посмотреть отчёты поисковой системы и логи переходов, а затем вручную открыть несколько URL с параметрами. Важно понять не только наличие дубля, но и его тип: это отдельная полезная страница или просто копия основного URL.

Полезно сравнить:

  • код ответа страницы;
  • наличие <meta name="robots" content="noindex">;
  • канонический URL;
  • попадает ли адрес в XML-карту сайта;
  • есть ли ссылка на этот URL внутри сайта.

Что делать: три рабочих подхода

В WordPress обычно используют один из трёх вариантов: закрыть страницу от индексации через noindex, убрать параметр из генерации URL или настроить каноникал на основную страницу. Выбор зависит от того, нужен ли этот адрес пользователю и должен ли он вообще существовать как отдельная страница.

ПодходКогда подходитМинус
noindexСтраница нужна пользователю, но не должна индексироватьсяURL остаётся доступным и может обходиться роботами
Канонический URLЕсть дубль с параметром, но контент один и тот жеНе всегда достаточно, если дубли активно генерируются
Удаление параметра из логики сайтаПараметр не нужен для SEO и не влияет на работуТребует правки кода или плагина

Пошаговое решение через код

Если нужно закрыть от индексации страницы с конкретными параметрами, проще всего добавить noindex, follow на фронтенде. Это не удаляет страницу, но говорит роботам не включать её в индекс. Подход годится для UTM-меток, сортировки, служебных фильтров и некоторых поисковых страниц.

<?php
add_action( 'wp_head', function () {
    if ( is_admin() ) {
        return;
    }

    $blocked_params = array( 'utm_source', 'utm_medium', 'utm_campaign', 'sort', 'filter', 'ref' );

    foreach ( $blocked_params as $param ) {
        if ( isset( $_GET[ $param ] ) ) {
            echo '<meta name="robots" content="noindex, follow">' . "\n";
            break;
        }
    }
} );

Этот вариант работает, если параметр действительно не должен индексироваться. Но у него есть ограничение: если страница уже попала в индекс, одного мета-тега может быть мало. Тогда нужно дождаться переобхода или дополнительно убрать причину появления дубля.

Когда лучше ставить канонический URL

Если параметр меняет только способ отображения, а не сам контент, полезно указать канонический адрес. Например, /catalog/?sort=price может вести на ту же страницу каталога, что и /catalog/. В таком случае каноникал помогает поисковику понять, какая версия основная.

<?php
add_filter( 'get_canonical_url', function ( $canonical, $post ) {
    if ( isset( $_GET['sort'] ) || isset( $_GET['filter'] ) ) {
        return get_permalink( $post );
    }

    return $canonical;
}, 10, 2 );

Этот пример уместен для записей и страниц. Для архивов и нестандартных шаблонов может понадобиться отдельная логика через wp_get_canonical_url() или правка темы. Главное — не подменять каноникал на случайный адрес и не указывать на страницу, которая сама закрыта от индексации.

Если параметр не нужен вообще

Иногда правильнее не закрывать дубль, а убрать саму причину его появления. Например, если UTM-метки используются только для аналитики, не стоит генерировать на их основе отдельные индексируемые страницы. Для фильтров и сортировки лучше либо оставить их без индексации, либо перевести на AJAX, если это оправдано архитектурой проекта.

Проверка здесь простая: если параметр не влияет на уникальный контент и не нужен в поиске, он не должен создавать отдельный URL в карте сайта, хлебных крошках и внутренних ссылках.

Проверка результата после внедрения

После правки не ограничивайтесь просмотром исходника. Проверьте несколько вещей вручную и в инструментах поисковой системы.

  • Откройте URL с параметром и убедитесь, что в <head> появился noindex, follow.
  • Проверьте, что канонический URL указывает на основную страницу.
  • Убедитесь, что параметризованный адрес не добавляется в XML sitemap.
  • Сравните ответ сервера для основного URL и URL с параметром.
  • В Search Console отправьте страницу на переобход, если она уже была в индексе.

Если вы используете командную строку на сервере, удобно проверить заголовки и HTML так:

curl -I "https://example.com/catalog/?sort=price"
curl -s "https://example.com/catalog/?sort=price" | grep -i "robots\|canonical"

По этим двум запросам видно, отдаёт ли страница нужный HTML и не ломается ли каноникал после правки темы или плагина.

Частые ошибки и как их исправить

Закрыли не тот параметр

Часто в коде проверяют только $_GET['utm_source'], а в индекс всё равно попадают другие параметры: sort, page, filter, s для поиска. Сначала составьте список реально используемых параметров, а потом уже пишите правило.

Поставили noindex, но оставили ссылку в меню или блоке

Если дубль активно связан внутренними ссылками, робот будет возвращаться к нему снова и снова. В таком случае лучше убрать ссылку или заменить её на канонический адрес.

Закрыли страницу, которая должна ранжироваться

Это типичная ошибка с фильтрами и поиском по сайту. Если страница полезна и должна собирать трафик, не ставьте на неё бездумный noindex. Сначала проверьте, есть ли у неё уникальный контент и поисковый спрос.

Сломали каноникал в теме

Иногда тема или SEO-плагин уже выводят canonical, а дополнительный код добавляет второй тег. В результате в HTML появляется конфликт. После внедрения проверьте исходник страницы и оставьте только один источник канонического URL.

Безопасность и производительность

Если вы закрываете параметры через код, не делайте это на основе «всех GET-запросов подряд». Иначе можно случайно закрыть полезные страницы поиска, фильтров или пагинации. Лучше вести явный список параметров и документировать его в теме или mu-plugin.

Для производительности полезно ещё и сократить количество URL, которые вообще генерируются внутри сайта. Чем меньше мусорных ссылок в шаблонах, тем меньше обход роботов и тем чище отчёты. Если на проекте уже накопилось много дублей и служебных URL, имеет смысл проверить настройки SEO-плагина и чистку лишних архивов. В некоторых случаях для этого удобен Clearfy Pro, но только как инструмент настройки, а не как замена пониманию логики URL.

Короткий чек-лист перед публикацией

  • Список параметров составлен и не включает лишнего.
  • Для нужных URL добавлен noindex, follow или каноникал.
  • Параметризованные адреса не попадают в sitemap.
  • Внутренние ссылки ведут на основную версию страницы.
  • В исходнике нет двух canonical или конфликтующих meta robots.
  • После правки страница проверена через curl и в поисковых инструментах.

Если задача сводится к чистке дублей и технической оптимизации, сначала решайте источник проблемы, а уже потом — индексацию. Это почти всегда надёжнее, чем массово закрывать URL постфактум.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее