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

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

Задача здесь не в том, чтобы «сломать» поиск, а в том, чтобы оставить его рабочим для пользователей и одновременно не отдавать такие страницы в индекс. Ниже — рабочие варианты: через noindex, через robots.txt и через доработку шаблона поиска.

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

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

Диагностика проблемы

  • Проверьте, индексируются ли URL с ?s= через поиск по сайту в поисковике.
  • Откройте несколько поисковых запросов и посмотрите исходный код страницы: есть ли meta name="robots".
  • Посмотрите, не генерирует ли тема отдельный шаблон поиска с каноникалами на саму выдачу.
  • Проверьте, не закрыт ли поиск только в robots.txt: это не всегда убирает уже известные URL из индекса.

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

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

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

СпособЧто делаетПлюсМинус
meta robots noindexЗапрещает индексацию страницыРаботает на уровне страницыНужно внедрить в шаблон или через SEO-плагин
robots.txtЗапрещает обходПросто добавитьНе гарантирует удаление уже проиндексированных URL
Каноникал на главную или архивПодсказывает основной URLПолезно для дублейДля поиска часто спорно и не всегда уместно

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

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

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

    return $robots;
});

Этот код можно разместить в functions.php дочерней темы или в небольшом mu-plugin, если не хотите зависеть от темы. Для поиска это обычно достаточно: в HTML появится директива noindex, а ссылки внутри страницы останутся доступными для обхода.

Если нужен более жёсткий вариант

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

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

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

Как закрыть поиск через SEO-плагин

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

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

Что добавить в robots.txt, а что не стоит

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

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

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

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

После изменений не ограничивайтесь визуальной проверкой. Откройте страницу поиска и посмотрите исходный код: в блоке <head> должен быть noindex. Если используете заголовок, проверьте его через инструменты разработчика или curl.

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

Что должно быть видно:

  • в HTML есть meta name="robots" content="noindex,follow" или эквивалент;
  • поисковая страница открывается для пользователя;
  • в Search Console/Вебмастере новые URL поиска перестают попадать в индекс;
  • старые URL постепенно выпадают после переобхода.

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

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

Закрыли только в robots.txt

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

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

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

Оставили поиск доступным, но не ограничили нагрузку

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

Не проверили тему и SEO-плагин одновременно

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

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

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

  • Не закрывайте поиск полностью, если он нужен пользователям и по нему идут переходы.
  • Не полагайтесь только на robots.txt для удаления уже известных URL.
  • После внедрения проверьте кэш, CDN и серверные заголовки.
  • Если используете несколько SEO-инструментов, оставьте один источник для noindex.

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

Как изменить календарь в Gutenberg блоках WordPress
29.03.2026
Как закрыть от индексации страницы внутреннего поиска WordPress
19.08.2026
Автоматическое удаление неактивных пользователей WordPress: практические решения
12.04.2026
Как убрать версию WordPress из HTML и REST API для безопасности сайта
08.12.2025
Как использовать хуки в WordPress: практические примеры и советы
07.11.2025