wplang.ru wordpress WP Lang

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

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

Задача здесь не в том, чтобы «спрятать всё подряд», а в том, чтобы корректно убрать из индекса именно результаты поиска, сохранив работу поиска для пользователей и не ломая внутренние ссылки.

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

Проверять нужно не по ощущениям, а по фактам. Откройте несколько URL вида /?s=запрос или /search/запрос/ — в зависимости от темы и настроек. Если такие страницы доступны без авторизации, отдают 200 OK и попадают в индекс, это уже повод для правки.

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

  • в отчётах Google Search Console появляются URL с параметром s;
  • в индексе есть страницы поиска с пустым или почти пустым сниппетом;
  • поисковик тратит время на десятки однотипных URL с разными запросами;
  • в выдаче всплывают внутренние страницы поиска вместо нормальных посадочных.

Что именно индексируется

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

Какой способ выбрать: robots, noindex или код

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

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

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

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

Добавьте код в functions.php дочерней темы или в небольшой mu-plugin. Для сайта с обычным поиском WordPress этого достаточно:

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

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

<?php
add_filter('wp_headers', function ($headers) {
    if (is_search()) {
        $headers['X-Robots-Tag'] = 'noindex, follow';
    }
    return $headers;
});

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

Если поиск работает через параметр s

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

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

Что делать через SEO-плагин

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

Смысл один: найти настройку, которая добавляет noindex на search results pages. После этого не забудьте проверить исходный код страницы и заголовки ответа сервера.

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

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

  1. Откройте страницу поиска с любым запросом.
  2. Посмотрите исходный код и убедитесь, что есть <meta name="robots" content="noindex,follow" /> или заголовок X-Robots-Tag: noindex, follow.
  3. Проверьте ответ сервера через curl или инструменты разработчика.
  4. Убедитесь, что страница не закрыта от обхода в robots.txt, если вы рассчитываете именно на noindex.

Пример проверки через командную строку:

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

В ответе ищите строку с X-Robots-Tag, если вы использовали заголовок. Если работает только мета-тег, откройте HTML и проверьте наличие нужного meta.

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

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

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

Поставили noindex, но забыли про кэш

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

Закрыли не тот URL

Иногда на сайте есть и стандартный поиск WordPress, и отдельный поиск темы или плагина. Проверьте, какой именно URL реально индексируется. Иначе можно закрыть красивую страницу, а мусор останется на параметре ?s=.

Поставили noindex на все страницы подряд

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

Чек-лист перед публикацией правки

  • Проверен реальный URL поиска на сайте.
  • Выбран один основной способ: мета-тег или заголовок.
  • Кэш очищен после изменений.
  • В исходном коде есть noindex,follow.
  • Страница по-прежнему открывается для пользователя.
  • В robots.txt нет конфликта с выбранной схемой.
  • Проверен ответ через curl -I или DevTools.

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

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

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

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

×
C Днём программиста!
-20%

Ваша скидка
на премиум-темы и
плагины WordPress

Купить со скидкой сейчас ⋙