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

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

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

Когда это действительно нужно

Сначала проверьте, что у вас именно внутренний поиск WordPress, а не отдельный каталог или фильтр. Типичный адрес выглядит так: / ?s=запрос или /search/запрос/ в зависимости от темы и настроек. Если по этим URL в индексе уже есть страницы, а в Search Console растёт число «Просканировано, но не проиндексировано» или «Дубли, Google выбрал другой канонический URL», это хороший сигнал.

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

Откройте несколько поисковых URL вручную и проверьте три вещи:

  • есть ли на странице реальный контент или только список записей;
  • меняется ли title и meta description под каждый запрос;
  • не создаёт ли тема отдельные канонические URL для поиска.

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

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

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

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

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

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

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

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

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

Если тема уже выводит robots через wp_robots, второй фильтр обычно достаточно надёжен. Первый блок оставлен как страховка для старых шаблонов, где meta robots собирается вручную.

Если поиск у вас на красивом URL

Некоторые темы и плагины делают поиск через путь вроде /search/term/. В таком случае условие is_search() тоже сработает, если запрос обрабатывается стандартным WordPress-поиском. Если это кастомный роут, придётся проверять конкретный шаблон и, возможно, добавлять логику по is_page() или по query var.

Для точечной блокировки обхода можно добавить правила в robots.txt:

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

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

Как проверить, что решение сработало

После внедрения откройте страницу поиска в браузере и посмотрите исходный код. В нём должен быть <meta name="robots" content="noindex,follow"> или эквивалентный вывод через wp_robots. Затем проверьте HTTP-ответ и HTML в инструментах для проверки URL, если они у вас есть.

  • в исходнике есть noindex;
  • страница поиска по-прежнему открывается для пользователя;
  • в sitemap нет поисковых URL;
  • через несколько обходов поисковик перестаёт показывать новые поисковые страницы.

Если используете Google Search Console, отправьте на проверку несколько поисковых URL и посмотрите, как меняется статус. Не ждите мгновенного исчезновения: сначала поисковику нужно переобойти старые адреса.

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

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

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

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

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

Сломали канонический URL

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

Код добавили в родительскую тему

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

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

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

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

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

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

⭐⭐⭐⭐⭐