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

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

Когда проблема действительно есть

Сначала проверьте, что именно индексируется. В поиске Google или Яндекса можно найти запросы вида site:example.com inurl:?s= или site:example.com inurl:/?s=. Если в выдаче есть страницы поиска, откройте несколько URL и посмотрите, что на них реально показывается: результаты, пустая выдача, служебные страницы, страницы с низкой ценностью.

Типичный сценарий выглядит так:

  • поиск доступен по адресу /?s=запрос;
  • в индексе оказываются URL с разными поисковыми фразами;
  • часть страниц возвращает мало контента или вообще пустой результат;
  • в отчётах по индексации растёт число «мусорных» URL.

Что не стоит делать

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

Рабочая схема: закрыть поиск от индексации, но оставить его для пользователей

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

ПодходКогда подходитПлюсыМинусы
SEO-плагинЕсли уже используется Yoast, Rank Math или аналогБез кода, удобно для редактораЗависит от конкретного плагина и его настроек
Код в теме/плагинеЕсли нужен контролируемый и лёгкий вариантНе добавляет лишнюю логику, работает предсказуемоНужно аккуратно вносить изменения
КомбинированноЕсли есть и SEO-плагин, и нестандартная разметкаМожно закрыть и поиск, и связанные архивыРиск конфликтов, если дублировать правила

Вариант через код: добавить noindex на страницы поиска

Если у вас обычный поиск WordPress по параметру s, можно добавить мета-тег noindex,follow только на поисковые результаты. Это не ломает поиск, но подсказывает роботам не индексировать такие страницы.

<?php
add_action('wp_head', function () {
    if (is_search()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
}, 1);

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

Вариант через фильтр robots meta в SEO-плагине

Если сайт использует Yoast SEO, у него есть фильтр wpseo_robots. Через него можно точечно задать правило для поисковых страниц:

<?php
add_filter('wpseo_robots', function ($robots) {
    if (is_search()) {
        return 'noindex,follow';
    }

    return $robots;
});

Этот вариант удобен, если вы не хотите вмешиваться в шаблоны темы. Но он имеет смысл только тогда, когда Yoast действительно установлен и активен.

Если нужен более жёсткий контроль: убрать search-URL из sitemap и внутренних ссылок

Одного noindex обычно достаточно. Но если на сайте много внутренних ссылок на страницы поиска, лучше проверить, откуда они берутся. Часто это:

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

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

Проверка после внедрения

После изменений не ограничивайтесь просмотром исходника главной страницы. Проверьте именно поисковый URL, например /?s=test.

  1. Откройте страницу поиска в браузере.
  2. Посмотрите исходный код и убедитесь, что есть <meta name="robots" content="noindex,follow" />.
  3. Проверьте HTTP-заголовки, если у вас есть серверная логика, которая может добавлять X-Robots-Tag.
  4. В Search Console отправьте URL на проверку и посмотрите, как робот видит страницу.

Для быстрой проверки заголовков можно использовать curl:

curl -I "https://example.com/?s=test"

Если вы добавляли X-Robots-Tag на уровне сервера или плагина безопасности, в ответе должен быть виден соответствующий заголовок. Если используете только meta robots, в заголовках его не будет — это нормально.

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

Закрыли поиск в robots.txt и на этом остановились

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

Поставили noindex на все страницы сайта

Иногда в шаблоне по ошибке используют слишком общий условный тег или вставляют мета-тег без проверки is_search(). В результате поисковики перестают индексировать и обычные страницы. Убедитесь, что условие срабатывает только на search-результатах.

Дублируют правила SEO-плагин и тема

Если Yoast или Rank Math уже выводит robots meta, а вы добавили ещё один тег вручную, можно получить конфликт. Оставьте один источник правды: либо настройка плагина, либо код.

Путают поиск по сайту и фильтры каталога

На некоторых проектах под «поиском» понимают ещё и фильтры, сортировки, параметры в URL. Для них нужны отдельные правила: где-то noindex, где-то каноникал, а где-то вообще блокировка индексации через настройки плагина. Не переносите решение для /?s= на все параметры без проверки.

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

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

Полезно также:

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

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

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

  • Проверили, что индексируются именно страницы /?s=, а не обычные записи.
  • Добавили noindex,follow только на search-страницы.
  • Убедились, что нет второго конфликтующего robots meta.
  • Проверили исходный код и ответ сервера на тестовом запросе.
  • Посмотрели, не попадают ли search-URL в sitemap и внутренние ссылки.

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

⭐⭐⭐⭐⭐