Как закрыть страницы с параметрами в WordPress через robots.txt и noindex

Страницы с параметрами в WordPress обычно появляются незаметно: поиск по сайту, сортировка, фильтры, UTM-метки, служебные параметры плагинов. Проблема не в самих URL, а в том, что поисковик начинает считать их отдельными страницами. В результате в индексе копятся дубли, а в отчётах Search Console растёт число «Просканировано, но не проиндексировано» или «Дубликат, выбран другой канонический URL».

Если задача именно техническая — закрыть такие адреса от индексации и при этом не сломать обход важного контента — лучше разделять инструменты: robots.txt для ограничения обхода, noindex или X-Robots-Tag для запрета индексации. Ниже разберём, когда что использовать и как проверить результат.

Как понять, что проблема именно в параметрах URL

Сначала не трогайте настройки вслепую. Посмотрите, какие именно адреса уже попали в индекс или в обход поисковика. Обычно источник проблемы виден в логике URL:

  • ?s= — поиск по сайту;
  • ?orderby=, ?sort= — сортировка;
  • ?filter_, ?attribute_ — фильтры;
  • ?utm_ и похожие метки — маркетинговые параметры;
  • ?replytocom= — служебные ссылки на комментарии;
  • параметры плагинов кэша, аналитики, A/B-тестов.

Проверка простая: откройте несколько таких URL и посмотрите исходный код страницы. Если в <head> нет явного noindex, а canonical указывает на сам параметризованный адрес, поисковик может считать его самостоятельной страницей.

Что именно нужно закрывать

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

СценарийЧто делатьКомментарий
UTM-меткиОставить canonical на чистый URLОбычно достаточно не плодить дубли
Внутренний поискnoindex,followИндексировать такие страницы редко имеет смысл
Сортировка и фильтрыnoindex + canonicalЕсли страницы не несут уникального контента
Служебные параметрыrobots.txt и/или заголовок X-Robots-TagПодходит для массовых шаблонов URL

Пошаговое решение: robots.txt, canonical и noindex

Рабочая схема обычно состоит из трёх слоёв. Сначала ограничиваем обход мусорных URL, затем явно говорим поисковику, что индексировать их не нужно, и отдельно следим за canonical.

1. Добавьте базовые правила в robots.txt

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

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

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

2. Добавьте noindex для параметризованных страниц

Если страница должна открываться для пользователя, но не попадать в индекс, лучше использовать noindex. В WordPress это можно сделать через wp_robots — штатный фильтр, который позволяет добавить директивы в мета-robots.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() || isset( $_GET['orderby'] ) || isset( $_GET['sort'] ) || isset( $_GET['filter_'] ) ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
} );

Здесь есть важный нюанс: проверка через isset($_GET['filter_']) сработает только для точного имени параметра. Если у вас много параметров с общим префиксом, лучше проверять список конкретных ключей через array_key_exists() или $_GET после очистки.

3. Не ломайте canonical

Если на странице есть фильтр или сортировка, canonical должен вести на чистую версию URL, а не на адрес с параметрами. Иначе вы сами подскажете поисковику, что параметризованная страница — основная.

Во многих темах и SEO-плагинах canonical ставится автоматически. Но если он формируется неправильно, проверьте шаблон вывода head и убедитесь, что для параметризованных страниц canonical очищается от лишних GET-параметров.

<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
    if ( is_singular() ) {
        return remove_query_arg( array( 'utm_source', 'utm_medium', 'utm_campaign', 'orderby', 'sort', 'filter_' ), $canonical );
    }

    return $canonical;
}, 10, 2 );

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

Когда лучше использовать X-Robots-Tag вместо мета-тега

Если параметризованные URL генерируются массово и вы не хотите править шаблоны темы, удобнее отдавать директиву через HTTP-заголовок X-Robots-Tag. Это особенно полезно для служебных страниц, PDF, выгрузок и других URL, где нет нормального HTML-шаблона.

В WordPress можно добавить заголовок на уровне PHP:

<?php
add_action( 'send_headers', function() {
    if ( is_search() || isset( $_GET['replytocom'] ) ) {
        header( 'X-Robots-Tag: noindex, follow', true );
    }
} );

Плюс этого подхода в том, что директива сработает даже если тема не выводит корректный <meta name="robots">. Минус — сложнее отлаживать, если на сайте уже есть несколько слоёв SEO-логики.

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

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

  1. Откройте URL с параметром и посмотрите исходный код: должен быть noindex или заголовок X-Robots-Tag.
  2. Проверьте canonical: он должен вести на чистый адрес без лишних параметров.
  3. В Search Console отправьте URL на проверку и посмотрите, как робот видит страницу после повторного обхода.

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

curl -I "https://example.com/page/?sort=price"

Ищите в ответе X-Robots-Tag, а также убедитесь, что страница не отдаёт неожиданный редирект на другой параметризованный URL.

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

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

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

Поставили noindex, но canonical указывает на тот же URL

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

Закрыли слишком много параметров

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

Смешали индексацию и кэш

Иногда кэш-плагин отдаёт старую версию страницы без новых мета-тегов. После изменений очистите кэш страницы, объектный кэш, CDN и браузерный кэш. Иначе вы будете проверять уже не тот HTML, который видит поисковик.

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

Проверяйте входные параметры перед тем, как использовать их в логике шаблона. Даже если вы только решаете SEO-задачу, не стоит опираться на сырые значения из $_GET без необходимости. Для сложных сценариев лучше whitelist конкретных параметров.

Если параметров много, не плодите отдельные условия в нескольких файлах темы. Вынесите логику в небольшой mu-plugin или в собственный плагин, чтобы она не потерялась при обновлении темы. Это особенно важно, если сайт обслуживает несколько редакторов и маркетологов, которые регулярно добавляют UTM-метки и фильтры.

Для сайтов, где дублей много из-за технических настроек, полезно проверить и сопутствующие вещи: sitemap, пагинацию, архивы тегов, страницы поиска. Иногда проблема с параметрами — только верхушка, а основная масса дублей идёт из шаблонов архива и внутренних фильтров. В таких случаях помогает связка правил в robots.txt, корректного canonical и точечного noindex.

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

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

  • Проверены реальные параметры, которые создают дубли.
  • Для мусорных URL добавлен noindex или X-Robots-Tag.
  • robots.txt не закрывает важные разделы сайта.
  • Canonical ведёт на чистый URL.
  • Кэш очищен после изменений.
  • URL проверен через curl -I и в Search Console.

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

Как найти и убрать дубли метаданных в WordPress без лишних рисков
29.08.2026
Как отлавливать и обрабатывать ошибки в AJAX-запросах WordPress
24.12.2025
Как использовать WP Rollback для отката версии плагинов в WordPress
24.04.2026
Как настроить 301-редирект для удалённых страниц в WordPress
25.08.2026
Как удалить неиспользуемые таблицы из базы WordPress без рисков
14.01.2026

Мы занимаемся разработкой приложений и плагинов для WordPress. Ниже предлагаем ознакомиться с ними.