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

Проблема с URL вида ?utm_source=, ?replytocom=, ?sort= или внутренними фильтрами обычно всплывает не сразу. Сайт уже проиндексирован, в отчётах Search Console появляются десятки и сотни «альтернативных» адресов, а каноникал не всегда спасает: поисковик всё равно тратит обход на мусорные варианты, а аналитика смешивает полезный и служебный трафик.

Если задача не в том, чтобы «запретить всё подряд», а в том, чтобы оставить нужные страницы доступными пользователю и убрать лишние варианты из индекса, действовать нужно по схеме: сначала найти типы параметров, потом выбрать способ обработки для каждого, и только после этого править WordPress, сервер или robots.txt.

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

Начинать стоит не с robots.txt, а с проверки того, какие URL уже попали в индекс и откуда они берутся. В WordPress чаще всего встречаются три сценария: маркетинговые метки, служебные параметры комментариев и параметры сортировки/фильтрации, которые генерируют темы или плагины.

Что смотреть в первую очередь

  • отчёт «Страницы» в Google Search Console, особенно URL с ? в адресе;
  • логи сервера или статистику обхода, если есть доступ;
  • поиск по сайту: site:example.com inurl:?;
  • исходный код страниц — есть ли корректный rel="canonical";
  • настройки плагинов аналитики, рекламы и фильтров, которые добавляют параметры в ссылки.

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

Как выбрать способ закрытия: robots.txt, noindex или canonical

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

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

На практике для параметров, которые меняют только представление, обычно лучше сочетать canonical на чистую версию и noindex,follow для служебных вариантов. А robots.txt использовать точечно, когда нужно ограничить именно обход, а не индексацию как таковую.

Пошаговое решение в WordPress

1. Добавьте noindex для URL с параметрами

Если у вас нет SEO-плагина, который уже умеет это делать, можно повесить обработку на wp_head. Ниже пример для типовых параметров: replytocom, sort, filter, utm_*. Логика простая: если в URL есть служебный параметр, выводим noindex,follow.

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

    $query = $_GET;
    if (empty($query)) {
        return;
    }

    $noindex = false;

    foreach ($query as $key => $value) {
        if ($key === 'replytocom' || $key === 'sort' || $key === 'filter') {
            $noindex = true;
            break;
        }

        if (strpos($key, 'utm_') === 0) {
            $noindex = true;
            break;
        }
    }

    if ($noindex) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

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

2. Укажите canonical на чистую версию URL

Если тема или SEO-плагин не справляются с параметрами, можно принудительно подменить canonical. Важно не подставлять один и тот же адрес для всех страниц: canonical должен строиться от текущего URL без служебных параметров.

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (empty($_GET)) {
        return $canonical;
    }

    $remove = array('replytocom', 'sort', 'filter');
    $clean = $_GET;

    foreach ($remove as $key) {
        unset($clean[$key]);
    }

    foreach (array_keys($clean) as $key) {
        if (strpos($key, 'utm_') === 0) {
            unset($clean[$key]);
        }
    }

    $url = get_permalink($post);
    if (!empty($clean)) {
        $url = add_query_arg($clean, $url);
    }

    return $url;
}, 10, 2);

Если параметр действительно меняет контент и вы хотите оставить его в индексе, canonical на чистую версию ставить не нужно. В таком случае лучше сделать отдельную посадочную страницу или нормальный ЧПУ-адрес, а не полагаться на параметр.

3. Закройте служебные параметры в robots.txt точечно

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

User-agent: *
Disallow: /*?replytocom=
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /*?utm_

Такой вариант стоит использовать аккуратно и только после проверки, что эти параметры не нужны для индексации. Для UTM это обычно безопасно, для фильтров — не всегда.

Если параметры создаёт плагин или тема

Иногда источник проблемы не в SEO, а в шаблоне или расширении. Например, комментарии добавляют replytocom, фильтры каталога — свои query string, а кнопки «поделиться» — UTM-подобные хвосты. В этом случае лучше исправлять генерацию ссылок в исходном месте, а не лечить последствия на уровне индексации.

  • для комментариев проверьте, нужен ли вообще replytocom в теме;
  • для фильтров убедитесь, что служебные параметры не попадают в sitemap;
  • для маркетинговых меток не дублируйте UTM внутри внутренних ссылок;
  • для пагинации не смешивайте параметры сортировки с основным архивом.

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

Как проверить, что решение сработало

После внедрения не ограничивайтесь просмотром исходника. Проверьте поведение на уровне ответа сервера, HTML и индексации.

  1. Откройте URL с параметром, например /post/?replytocom=1.
  2. Убедитесь, что в <head> есть meta name="robots" content="noindex,follow".
  3. Проверьте canonical — он должен вести на чистый URL, если параметр служебный.
  4. В Search Console отправьте проверку URL и посмотрите, как Google видит страницу.
  5. Через несколько обходов проверьте, уменьшается ли количество параметризованных URL в отчётах.

Для быстрой локальной проверки удобно открыть страницу через curl и посмотреть заголовки и HTML:

curl -I 'https://example.com/post/?replytocom=1'
curl -s 'https://example.com/post/?replytocom=1' | grep -i 'robots\|canonical'

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

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

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

Поставили noindex на все страницы с параметрами, включая полезные

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

Canonical ведёт на неправильный адрес

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

Параметры продолжают появляться во внутренних ссылках

Тогда проблема не в индексации, а в генерации ссылок. Проверьте меню, кнопки, блоки темы и плагины аналитики. Если внутренние ссылки уже содержат ?utm_, поисковик будет видеть их как отдельные URL снова и снова.

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

Чем больше мусорных URL обходят боты, тем больше лишней нагрузки на сервер и тем сложнее анализировать логи. Но не стоит пытаться «лечить» это агрессивными правилами на уровне веб-сервера без теста. Слишком широкие запреты могут отрезать полезные страницы, а потом это сложно откатить.

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

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

Добавь в закладки и поделись с друзьями:

⭐⭐⭐⭐⭐
Как добавить поддержку WebP в WordPress без плагинов
03.10.2026
Как использовать выпадающие списки в WordPress своими руками: примеры и код
26.09.2026
WooCommerce: как отключить переход в корзину и сразу вести на оформление заказа
09.08.2026
Как добавить автоматическое удаление старого контента в WordPress
18.09.2026
Как отключить архивы дат в WordPress и убрать лишние страницы из индекса
21.09.2026
×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙