Внутренний поиск WordPress часто создаёт страницы вида ?s=запрос, которые поисковики могут обходить и индексировать. На небольшом сайте это обычно выглядит как несколько случайных URL в отчёте, а на контентном проекте — как поток мусорных страниц с пустыми или почти пустыми сниппетами. Проблема не в самом поиске, а в том, что его результаты редко несут самостоятельную ценность для индекса.
Если оставить всё как есть, поисковик может тратить обход на однотипные страницы, а в выдаче иногда появляются внутренние результаты поиска вместо нормальных посадочных страниц. Ниже — рабочие способы закрыть такие URL от индексации и при этом не сломать поиск для пользователей.
Как понять, что проблема действительно есть
Сначала проверьте, какие именно URL генерирует сайт. В WordPress это обычно:
/?s=запрос;/page/2/?s=запросна пагинации результатов;- варианты с параметрами фильтрации, если тема или плагин добавляют их поверх поиска.
Диагностика простая:
- Откройте несколько поисковых URL вручную и посмотрите исходный код страницы.
- Проверьте, есть ли в
<head>тегmeta robotsсnoindex. - Посмотрите отчёт по индексированию в Google Search Console: если там есть внутренний поиск, значит закрытие не сработало или сработало не везде.
Отдельно проверьте, не отдаёт ли тема или SEO-плагин канонический URL на саму страницу поиска. Это не всегда ошибка, но в сочетании с отсутствием noindex может усиливать путаницу.
Что лучше: robots.txt, noindex или код
Для страниц поиска WordPress чаще всего нужен именно noindex, а не запрет в robots.txt. Если закрыть URL только в robots, поисковик может не увидеть саму директиву noindex и оставить в индексе уже известные страницы. Поэтому для внутренних результатов поиска безопаснее сначала дать роботу увидеть страницу, а затем сказать, что индексировать её не нужно.
| Подход | Когда уместен | Минус |
|---|---|---|
| Плагин SEO | Если уже используете Yoast, Rank Math или похожее решение | Зависимость от настроек и совместимости темы |
| Код в теме или мини-плагине | Если нужен точечный контроль без лишних модулей | Нужно аккуратно поддерживать при обновлениях |
robots.txt | Как дополнительный слой, но не как единственная мера | Не гарантирует удаление из индекса |
Пошаговое решение через код
Если вы хотите закрыть только страницы поиска, не затрагивая остальной сайт, добавьте фильтр wp_robots. Он работает в современных версиях WordPress и позволяет изменить robots-мета без правки шаблонов.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Этот вариант удобен тем, что:
- не зависит от конкретного SEO-плагина;
- не требует править
header.phpвручную; - работает только на страницах поиска.
Если вам нужно ещё и убрать внутренний поиск из sitemap или из выдачи плагина SEO, это делается отдельно в настройках самого плагина. Не смешивайте эти задачи: noindex отвечает за индексацию, а sitemap — за обнаружение URL.
Если нужен более жёсткий вариант для старых тем
Иногда тема не использует стандартный вывод robots-мета, или в проекте есть кастомный шаблон. Тогда можно добавить мета-тег вручную через wp_head. Это не лучший первый выбор, но он рабочий.
<?php
add_action( 'wp_head', function() {
if ( is_search() ) {
echo '<meta name="robots" content="noindex, nofollow" />' . "\n";
}
} );Важно не дублировать этот тег, если SEO-плагин уже выводит свой robots-мета. Два одинаковых блока в <head> не ломают сайт, но усложняют диагностику.
Как сделать это через SEO-плагин
Если на сайте уже стоит SEO-плагин, сначала проверьте его настройки. Во многих конфигурациях есть отдельный переключатель для внутренних страниц поиска или для архивов, которые не должны индексироваться. Это проще, чем поддерживать свой код, если проектом управляет не разработчик.
Но здесь есть нюанс: не все плагины одинаково трактуют внутренний поиск. Поэтому после изменения настроек обязательно проверьте исходный код страницы поиска и убедитесь, что в нём появился noindex.
Проверка результата после внедрения
После правки не ограничивайтесь визуальной проверкой. Сделайте короткий техчек:
- Откройте
/?s=testв браузере. - Посмотрите исходный код и найдите
noindex. - Проверьте, что страница по-прежнему открывается для пользователя и поиск работает.
- В Google Search Console отправьте URL на проверку, если он уже был в индексе.
Если страница уже попала в индекс, одного noindex может быть недостаточно для мгновенного исчезновения. Обычно нужно дождаться повторного обхода. Не пытайтесь ускорить процесс через массовый disallow в robots.txt без необходимости: так робот может перестать видеть директиву noindex на уже известных URL.
Частые ошибки и как их исправить
Закрыли поиск только в robots.txt
Это частая ошибка. Робот может перестать обходить страницу, но уже известный URL останется в индексе с пустым или устаревшим сниппетом. Исправление: добавьте noindex на саму страницу поиска.
Поставили noindex на все страницы сайта
Такое случается, если фильтр написан без проверки is_search() или если условие сработало глобально. Исправление: ограничьте логику только страницами поиска и проверьте, что на обычных записях robots-мета не изменился.
Конфликт с SEO-плагином
Если плагин уже выводит свой robots-мета, а вы добавили второй вручную, в коде может появиться дублирование. Исправление: оставьте один источник управления robots-мета — либо плагин, либо код.
Не учли пагинацию результатов
Иногда закрывают только первую страницу поиска, а страницы /page/2/ и дальше остаются без нужной директивы. Исправление: проверяйте не только основной URL, но и пагинированные варианты, если тема их генерирует.
Практические советы по безопасности и производительности
Если внутренний поиск активно используется, подумайте не только об индексации, но и о нагрузке. На больших сайтах поиск по базе может быть тяжёлым, особенно если запросы идут по длинным текстам и без кеширования. В таком случае полезно:
- ограничить индексацию результатов поиска;
- не отдавать в поиск служебные и пустые типы записей;
- проверить, не создаёт ли тема лишние запросы на каждой странице результатов;
- при необходимости вынести поиск в отдельный сервис или использовать более быстрый механизм поиска.
Если вы управляете сайтом через код, держите решение в мини-плагине, а не в теме. Тогда при смене оформления правило не потеряется. Для точечных SEO-задач также удобно использовать Clearfy Pro: он помогает закрывать дубли и служебные страницы без ручной правки шаблонов, если проекту нужен именно плагинный путь.
Главная проверка здесь простая: страница поиска должна открываться для пользователя, но не должна претендовать на самостоятельную посадочную в индексе. Если это выполняется, настройка сделана правильно.