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

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

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

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

В WordPress под страницами поиска обычно понимают результаты по URL вида /?s=запрос или более «красивые» варианты, если на сайте включены ЧПУ и кастомные правила. С точки зрения поисковой системы это не отдельный полезный контент, а динамическая выдача, которая меняется от запроса к запросу.

Закрывать нужно именно страницы результатов поиска, а не весь сайт и не саму форму поиска. Форма может оставаться доступной для пользователей, а вот страницы с результатами лучше не индексировать. Иначе в индексе окажутся URL вроде /search/iphone/, /?s=купить, /?s= и другие вариации, которые не несут самостоятельной ценности.

Самый надёжный способ: запретить индексацию через meta robots

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

Если тема или плагин SEO уже умеют это делать, отдельный код не нужен. Многие SEO-плагины автоматически ставят noindex на страницы поиска. Но если такого поведения нет, можно добавить его вручную через хук wp_robots. Это современный способ для WordPress 5.7 и новее.

Пример кода для functions.php дочерней темы или собственного мини-плагина:

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

    return $robots;
} );

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

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

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

Но здесь есть важная оговорка: настройка зависит от веб-сервера и хостинга. На Apache это обычно делают через .htaccess или конфигурацию виртуального хоста, на Nginx — в конфиге сервера. Если у вас обычный shared-хостинг без доступа к конфигу, этот способ может быть недоступен.

Для WordPress-страниц поиска чаще проще и безопаснее использовать wp_robots. Заголовок X-Robots-Tag имеет смысл, если вы точно понимаете, где и как формируется ответ сервера, и можете проверить результат через инструменты разработчика или HTTP-заголовки.

Почему одного robots.txt недостаточно

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

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

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

Как не потерять полезные переходы из поиска

Закрыть страницу поиска от индексации не значит отключить сам поиск. Пользователь по-прежнему должен получать результаты по своему запросу. Проблемы начинаются, когда на сайте пытаются «зачистить» всё подряд и случайно ломают поиск, фильтры или внутренние ссылки.

Чтобы не потерять полезные переходы, проверьте три вещи:

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

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

Как проверить, что всё работает

После настройки не стоит полагаться только на предположение, что «всё должно быть нормально». Проверка занимает пару минут и сразу показывает, есть ли ошибка в теме, плагине или кэше.

Откройте страницу поиска, например https://example.com/?s=test, и проверьте:

  1. в исходном коде страницы есть noindex;
  2. в ответе сервера нет запрета, который мешает обходу ссылок, если вы специально его не ставили;
  3. страница открывается для пользователя и показывает результаты;
  4. в Google Search Console или другой панели вебмастера со временем уменьшается число проиндексированных URL поиска.

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

Что чаще всего идёт не так

На практике проблемы обычно повторяются. Самая частая — закрыли поиск в robots.txt, но не добавили noindex. В итоге URL всё равно остаются в индексе, просто без нормального обхода.

Вторая ошибка — ставят noindex на весь сайт или на слишком широкий шаблон, который задевает не только поиск, но и важные страницы. Это уже опаснее: можно случайно убрать из индекса категории, записи или архивы. Если правите код вручную, ограничивайте условие только функцией is_search().

Третья проблема — конфликт с SEO-плагином. Если плагин уже управляет robots-мета, а вы добавляете свой код поверх, проверьте итоговый HTML. Иногда из-за нескольких источников настроек получается неочевидное поведение, и страница получает противоречивые директивы.

Что выбрать в обычном проекте

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

Ручной код через wp_robots хорош тем, что не привязан к конкретному плагину и легко проверяется. Заголовок X-Robots-Tag стоит рассматривать только тогда, когда у вас есть причины управлять индексацией на уровне сервера. А вот полагаться только на robots.txt для этой задачи не стоит: он не решает проблему индексации полноценно.

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

⭐⭐⭐⭐⭐