WordPress Notes WPDream

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

Страницы внутреннего поиска WordPress часто попадают в индекс сами по себе: пользователь вводит запрос, получает URL вида / ?s=..., а поисковик видит десятки или сотни почти пустых страниц с разными параметрами. Для сайта это обычно лишний шум в индексе, а не трафик. Проблема не в самом поиске, а в том, что его результаты редко должны конкурировать с нормальными посадочными страницами.

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

Когда внутренний поиск WordPress становится проблемой

Сначала стоит понять, что именно у вас индексируется. В WordPress это обычно:

  • страницы поиска с параметром ?s=;
  • поиск с дополнительными параметрами сортировки или фильтрации;
  • пустые результаты поиска, где контент почти отсутствует;
  • страницы поиска, которые создаются ботами по случайным запросам.

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

Диагностика: что именно индексируется

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

https://example.com/?s=тест

Если страница открывается и в исходном коде нет noindex, поисковик может её индексировать. Дополнительно посмотрите:

  • есть ли в <head> тег <meta name="robots" content="noindex,follow">;
  • не закрыт ли URL только через robots.txt;
  • не создаёт ли тема или SEO-плагин собственную логику для поиска;
  • появляются ли такие страницы в отчёте «Страницы» в Google Search Console.

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

Что лучше: noindex, robots.txt или редирект

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

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

Для поиска редирект обычно не нужен: пользователь вводит запрос и ожидает результаты. Поэтому правильнее оставить функциональность, но закрыть её от индексации.

Пошаговое решение без плагина

Если у вас нет SEO-плагина или вы хотите контролировать поведение на уровне темы, добавьте noindex,follow только для страниц поиска. Самый надёжный способ — через фильтр wp_robots, который WordPress использует для формирования robots-мета.

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

    return $robots;
} );

Этот вариант хорош тем, что не ломает шаблон страницы и работает на уровне ядра. После добавления кода проверьте исходный HTML страницы поиска: в <head> должен появиться корректный robots-мета.

Если тема или другой плагин уже выводит свой robots-мета, убедитесь, что нет конфликта. Иногда в коде остаётся старый <meta name="robots" content="index,follow">, который перебивает нужное поведение.

Если нужно закрыть только поиск с параметром s

Иногда на сайте есть отдельные служебные страницы, которые тоже используют is_search(), но индексировать нужно не всё подряд. Тогда можно проверять конкретный запрос:

add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() && isset( $_GET['s'] ) && $_GET['s'] !== '' ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
} );

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

Если используете SEO-плагин

Во многих проектах robots-мета уже управляется SEO-плагином. В этом случае не стоит одновременно включать собственный код и настройки плагина, иначе получите конфликт. Логика должна быть одна: либо настройка в плагине, либо код в теме/му-плагине.

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

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

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

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

  1. Откройте страницу поиска в браузере и посмотрите исходный код.
  2. Убедитесь, что в <head> есть noindex,follow.
  3. Проверьте URL в Google Search Console через инспекцию страницы.

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

Дополнительно можно проверить ответ сервера:

curl -I https://example.com/?s=тест

В заголовках вы не увидите noindex, потому что он обычно задаётся в HTML. Но команда полезна, чтобы убедиться, что страница отдаёт 200 OK, а не редиректит на неожиданный URL.

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

  • Закрыли поиск только в robots.txt. Уже проиндексированные страницы могут остаться в выдаче. Добавьте noindex в HTML.
  • Поставили noindex и одновременно запретили обход. Если бот не видит страницу, он не увидит и мета-тег. Сначала дайте ему переобойти URL.
  • Оставили два robots-мета из темы и плагина. Поисковик может интерпретировать конфликт непредсказуемо. Оставьте один источник.
  • Случайно закрыли полезные страницы каталога или фильтров. Проверяйте условие is_search(), а не общий шаблон архива.
  • Не учли кэш. После изменения кода очистите серверный и плагинный кэш, иначе в HTML останется старая версия.

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

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

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

Если на сайте много служебных URL, имеет смысл дополнительно проверить:

  • нет ли дублей поиска с разными параметрами;
  • не создаёт ли тема отдельные шаблоны для пустых результатов;
  • не попадает ли поиск в XML-карту сайта;
  • не открыты ли для индексации внутренние страницы с параметрами сортировки.

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее