WPFAQ

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

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

Ниже — рабочие способы закрыть поиск от индексации: через robots.txt, через мета-тег noindex, через код темы или плагина. Разберём, что именно выбрать, как проверить результат и где чаще всего ошибаются.

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

Сначала стоит убедиться, что поисковик индексирует именно страницы поиска, а не просто показывает их в отчёте как обнаруженные URL. Откройте в Google Search Console раздел с индексированием и посмотрите, есть ли там адреса вида /?s=запрос или /page/2/?s=. Если такие URL уже попали в индекс, одной правки robots.txt обычно недостаточно: робот может перестать заходить на страницу, но уже известный URL не всегда быстро выпадет из выдачи.

Типичные признаки

  • в поиске находятся страницы вида site:example.com ?s=;
  • в Search Console растёт число URL с параметром s;
  • на сайте много внутренних ссылок на поиск, особенно в теме или виджетах;
  • поисковая выдача показывает пустые страницы поиска вместо полезных материалов.

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

У каждого способа свой эффект. Если нужен быстрый и безопасный контроль, лучше ставить noindex на саму страницу поиска. Если задача — ещё и не тратить краулинговый бюджет на обход таких URL, можно дополнительно закрыть их в robots.txt. Но полагаться только на Disallow рискованно: URL может остаться в индексе без возможности переобхода и удаления мета-данных.

СпособПлюсМинусКогда использовать
noindexНадёжно убирает страницу из индексаНужно, чтобы робот мог зайти на страницуОсновной вариант
robots.txtСнижает обход лишних URLНе гарантирует удаление из индексаКак дополнение
Плагин SEOБыстро без кодаЗависит от настроек и темыЕсли уже используете SEO-плагин

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

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

Вариант 1: добавить meta robots для поиска

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

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

Вариант 2: добавить X-Robots-Tag через заголовок

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

<?php
add_action('template_redirect', function () {
    if (is_search() && !headers_sent()) {
        header('X-Robots-Tag: noindex, follow', true);
    }
});

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

Как закрыть поиск через robots.txt

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

User-agent: *
Disallow: /*?s=
Disallow: /search/

Синтаксис зависит от того, как именно у вас формируются URL поиска. На стандартном WordPress чаще встречается параметр ?s=. Если тема или плагин создают красивый путь вроде /search/, добавьте и его. После правки проверьте, что файл robots.txt реально отдается сайтом, а не подменяется кэшем или виртуальным файлом плагина.

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

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

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

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

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

  1. Откройте URL поиска, например https://example.com/?s=test.
  2. Посмотрите исходный код страницы и убедитесь, что есть noindex,follow или заголовок X-Robots-Tag.
  3. Проверьте ответ сервера через DevTools, curl или любой HTTP checker.
  4. В Search Console отправьте URL на повторную проверку, если он уже был в индексе.

Пример проверки через curl:

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

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

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

Закрыли поиск в robots.txt, но не поставили noindex

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

Поставили noindex не на тот шаблон

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

Конфликт с SEO-плагином

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

Сломали кэширование

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

Что ещё стоит проверить на сайте

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

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

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

×

AI-плагин

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

SEO и мета-теги

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

Изображения

Комментарии

Подробнее