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

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

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

Какие страницы обычно нужно закрывать

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

Типичные кандидаты на noindex

  • страницы внутреннего поиска, например ?s=...;
  • страницы с параметрами сортировки и фильтрации, например ?orderby=, ?filter_, ?min_price=;
  • страницы пагинации, если они не должны ранжироваться отдельно;
  • архивы авторов, если на сайте один автор или архивы пустые;
  • служебные страницы тегов, если они дублируют категории и не дают трафика;
  • страницы с параметрами UTM и другими трекинговыми хвостами, если они индексируются как отдельные URL.

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

Диагностика: где именно у вас появляется дубль

Перед правкой проверьте, какие URL уже доступны поисковым роботам. Откройте несколько типовых страниц и посмотрите исходный код. Ищите:

  • <meta name="robots" content="index,follow"> на служебных страницах;
  • отсутствие canonical или canonical на саму страницу с параметрами;
  • дубли title и description у страниц поиска и фильтров;
  • индексацию URL с параметрами в Google Search Console или Яндекс Вебмастере;
  • наличие страниц в sitemap, если они туда попали по ошибке.

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

Что лучше использовать: плагин, код или оба варианта

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

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

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

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

1. Закрыть внутренний поиск и служебные параметры

<?php
add_filter('wp_robots', function ($robots) {
    if (is_search()) {
        $robots['noindex'] = true;
        $robots['nofollow'] = false;
    }

    if (!empty($_GET['orderby']) || !empty($_GET['filter_']) || !empty($_GET['min_price']) || !empty($_GET['max_price'])) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

Этот вариант работает в современных версиях WordPress, где используется фильтр wp_robots. Он не ломает страницу, а меняет только robots-мета для нужных запросов.

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

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

<?php
add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_search()) {
        return home_url('/');
    }

    if (!empty($_GET['orderby']) || !empty($_GET['filter_']) || !empty($_GET['min_price']) || !empty($_GET['max_price'])) {
        return home_url(add_query_arg([], remove_query_arg(array_keys($_GET))));
    }

    return $canonical;
}, 10, 2);

Здесь есть нюанс: не все запросы одинаково безопасно чистить через remove_query_arg(). Если у вас сложная фильтрация, лучше явно задавать canonical на базовый архив, а не пытаться собирать URL из текущих параметров.

Как закрыть архивы авторов и теги без лишнего риска

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

Пример для отключения индексации архивов автора и тегов через robots-мета:

<?php
add_filter('wp_robots', function ($robots) {
    if (is_author() || is_tag()) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

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

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

После правки не ограничивайтесь визуальной проверкой. Нужно убедиться, что WordPress действительно отдает нужные мета-теги и canonical.

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

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

Что считать нормальным результатом

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

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

1. Закрыли всё через robots.txt

Это частая ошибка. Если URL уже известен поисковику, запрет обхода не равен удалению из индекса. Исправление: для дублей используйте noindex, а robots.txt — только для действительно служебных разделов, которые не должны обходиться.

2. Поставили noindex, но забыли про canonical

В результате поисковик видит несколько похожих страниц и не понимает, какая основная. Исправление: для фильтров и сортировок указывайте canonical на базовый архив или основную страницу.

3. Закрыли полезные страницы вместе с мусорными

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

4. Код добавили в родительскую тему

После обновления тема перезапишется, и настройка исчезнет. Исправление: используйте дочернюю тему или mu-plugin.

5. Не проверили кэш и CDN

Старые версии страниц могут оставаться в кэше даже после правки. Исправление: очистите серверный кэш, кэш плагина и CDN, если он есть.

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

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

  • не храните SEO-логику в шаблонах страниц, если она относится ко всему сайту;
  • не используйте слишком общие условия вроде if (!empty($_GET)) — это почти всегда ломает полезные URL;
  • если фильтров много, заведите отдельный список разрешенных и запрещенных параметров;
  • проверяйте, не генерирует ли плагин фильтрации отдельные страницы, которые попадают в sitemap;
  • после обновлений темы повторно тестируйте robots-мета на нескольких типах URL.

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

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

WooCommerce: не отображается SKU товара в теме — как исправить
20.06.2026
Как добавить поддержку WooCommerce в свою WordPress тему
21.02.2026
Как добавить динамический вывод атрибутов продуктов WooCommerce в тему WordPress
19.01.2026
Как создать свою WordPress тему с нуля
04.11.2025
Как создать динамический журнал в WordPress с помощью REST API
23.11.2025