wpload.ru wordpress WPLoad.ru

Как закрыть индексацию страниц фильтров и параметров в WordPress

На WordPress дубли чаще всего появляются не из-за контента, а из-за URL с параметрами: ?sort=, ?filter=, ?utm_, ?replytocom=, а также страниц поиска и фасетной навигации. Для поисковика это отдельные адреса, и если их не контролировать, в индексе быстро накапливаются мусорные страницы. На сайте это обычно видно по росту числа URL в отчётах Search Console, по странным страницам в выдаче и по тому, что важные посадочные начинают конкурировать с их параметрическими копиями.

Когда проблема уже есть: как понять, что в индекс попали дубли

Сначала проверьте не «ощущения», а конкретные признаки. Если в поиске по сайту находятся URL с параметрами, это уже повод разбираться. Ещё один сигнал — в отчёте о страницах в Google Search Console есть адреса, которые отличаются только хвостом параметров, но содержат тот же контент. Для WordPress это типично после подключения фильтров, рекламной аналитики или плагинов сортировки.

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

Что именно искать

  • URL с ?utm_, ?gclid=, ?fbclid=.
  • Страницы поиска вида /search/... и внутренний поиск с параметром ?s=.
  • Фильтры и сортировки: ?sort=price, ?filter_color=red, ?orderby=.
  • Параметр комментариев ?replytocom=.
  • Пагинация с параметрами, если она дублирует уже существующие архивы.

Что делать: рабочая схема без лишних запретов

Не стоит закрывать всё подряд через robots.txt. Это частая ошибка: робот перестаёт сканировать URL, но уже известные адреса могут остаться в индексе без нормального сигнала на удаление. Для параметров, которые создают дубли, лучше сочетать три инструмента: canonical, noindex для служебных страниц и аккуратные правила в robots.txt только там, где это действительно уместно.

Шаг 1. Уберите мусорные параметры из индекса через canonical

Если параметр не меняет смысл страницы, canonical должен указывать на чистый URL без параметров. Для большинства UTM это уже делает WordPress или SEO-плагин, но на кастомных шаблонах и фильтрах это часто забывают. Если у вас есть собственная логика вывода, проверьте, что canonical не наследует query string.

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_admin() || ! $canonical) {
        return $canonical;
    }

    // Убираем query string из canonical для обычных страниц и записей.
    $canonical = strtok($canonical, '?');

    return $canonical;
}, 10, 2);

Этот вариант не решает всё сам по себе, но помогает, если тема или плагин выводят canonical с параметрами. После внедрения проверьте исходный код страницы: в теге <link rel="canonical"> должен быть чистый URL.

Шаг 2. Закройте служебные страницы от индексации

Страницы поиска, архивы без ценности и результаты с пустой выборкой обычно лучше отдавать с noindex,follow. Так бот может пройти по ссылкам, но сама страница не будет претендовать на место в выдаче. Если используете SEO-плагин, настройте это там. Если нужна точечная логика в коде, можно добавить мета-тег условно.

<?php
add_action('wp_head', function () {
    if (is_search() || is_404()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
});

Для поиска это особенно полезно: внутренний поиск почти всегда создаёт тонкие страницы с низкой ценностью. Если у вас есть отдельная SEO-страница поиска, это уже другой сценарий, но обычный ?s= лучше не индексировать.

Шаг 3. Ограничьте индексацию параметров на уровне robots.txt только там, где это безопасно

В robots.txt имеет смысл закрывать в первую очередь технические и бесконечно генерируемые URL, которые не должны сканироваться вообще. Но не используйте robots.txt как единственный способ борьбы с дублями. Для уже проиндексированных адресов он не всегда помогает быстро убрать их из выдачи.

User-agent: *
Disallow: /?s=
Disallow: /*?replytocom=
Disallow: /*?filter_
Disallow: /*?sort=

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

Сравнение подходов: что выбрать в реальном проекте

Подход Когда подходит Минус
SEO-плагин Нужно быстро закрыть поиск, архивы, теги, авторов и часть дублей Не всегда удобно для точечной логики с кастомными фильтрами
Код в теме или мини-плагине Есть свои параметры, фильтры, нестандартные шаблоны Нужно тестировать после обновлений темы и плагинов
robots.txt Нужно отсечь технический мусор от сканирования Не гарантирует удаление уже известных URL из индекса

Если нужен не только контроль дублей, но и чистка служебных страниц, на практике часто хватает связки SEO-плагина и точечного кода. Например, в Clearfy Pro есть набор настроек для закрытия дублей и служебных страниц, но даже с плагином полезно понимать, что именно он меняет и где остаётся ваша зона ответственности.

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

После правок не ограничивайтесь открытием страницы в браузере. Проверьте несколько уровней сразу: HTML-исходник, HTTP-ответ и индексацию. Если страница должна быть noindex, в исходнике должен быть соответствующий meta robots. Если вы меняли canonical, он должен вести на чистый адрес. Если правили robots.txt, убедитесь, что правило не зацепило нужные разделы.

Мини-чек-лист проверки

  • Откройте страницу с параметром и без него, сравните canonical.
  • Проверьте, что служебная страница отдаёт noindex,follow, если это задумано.
  • Посмотрите, не закрыт ли важный контент в robots.txt случайным шаблоном.
  • В Search Console отправьте на переобход ключевые URL без параметров.
  • Через несколько дней проверьте, уменьшилось ли число дублей в отчётах по страницам.

Если есть доступ к консоли, можно быстро проверить заголовки ответа. Это особенно полезно, когда noindex ставится не в HTML, а через HTTP header.

curl -I https://example.com/?s=test

В ответе смотрите на X-Robots-Tag, если он используется, и на код ответа. Для служебных страниц не должно быть неожиданного редиректа на главную или цепочки из нескольких переходов.

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

Закрыли URL в robots.txt, но дубли остались в индексе

Это нормальная ситуация, если адрес уже был известен поисковику. Robots.txt не удаляет URL из индекса сам по себе. Нужен либо noindex, либо canonical на чистую страницу, либо возврат 404/410 для реально ненужных адресов.

Поставили noindex на страницу, которая должна приносить трафик

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

Canonical указывает сам на себя с параметрами

Причина обычно в теме или плагине, который берёт текущий URL без очистки query string. Исправляйте на уровне шаблона или фильтра, иначе поисковик будет видеть несколько версий одной страницы как разные сигналы.

Слишком широкие правила в robots.txt

Шаблон вроде Disallow: /*? может отрезать не только мусорные параметры, но и полезные страницы с управляемой навигацией. Перед публикацией такого правила проверьте, какие URL реально используют параметры на сайте.

Безопасность и производительность: что не забыть

Чем больше параметров и фильтров на сайте, тем выше риск получить не только SEO-дубли, но и лишнюю нагрузку на сервер. Особенно это заметно на страницах с тяжёлыми запросами к базе. Если фильтр строится на WP_Query или кастомных SQL-запросах, ограничьте набор допустимых параметров и не передавайте в запрос всё подряд из $_GET.

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

Если нужен более системный подход к чистке дублей, служебных страниц и SEO-настроек, можно посмотреть на инструменты уровня Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином полезно держать под контролем canonical, robots и логику фильтров в коде — это те места, где обычно и возникает проблема.

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

×
-15%
на премиум-тему
Reboot

Создай сайт мечты
на WordPress!

Купить со скидкой »