Страницы внутреннего поиска в WordPress часто попадают в индекс не потому, что это полезные посадочные страницы, а потому что поисковик находит URL с параметром ?s=. В результате в выдаче появляются пустые или почти пустые страницы, дубли запросов и мусорный трафик. Если сайт активно растёт, это быстро превращается в техническую проблему: краулинговый бюджет уходит на бесполезные URL, а в отчётах Search Console появляются странные страницы с низким качеством.
Ниже разберём, как закрыть такие страницы от индексации в WordPress без поломки самого поиска, как проверить результат и где чаще всего ошибаются.
Когда это действительно проблема
Не каждый сайт обязан прятать внутренний поиск. Но если у вас есть хотя бы один из этих сценариев, с ним стоит разобраться:
- в индекс попадают URL вида
/?s=запросили/search/запрос/; - поисковик показывает страницы поиска вместо нормальных страниц каталога или статей;
- на сайте много однотипных запросов, которые создают сотни слабых страниц;
- в логах или в отчётах сканирования видно, что бот часто ходит по поисковым URL;
- внутренний поиск даёт почти пустую выдачу, но URL всё равно доступны для индексации.
Что именно нужно закрывать
Обычно речь идёт не о самом поиске как функции, а о страницах результатов поиска. Пользователь должен по-прежнему искать по сайту, но поисковым системам не нужно индексировать такие страницы. Это разные задачи.
Диагностика: какие URL уже индексируются
Сначала проверьте, какие варианты поиска реально существуют на сайте. В WordPress это может быть стандартный параметр s, а в некоторых темах и плагинах — человекочитаемый путь вроде /search/term/. Посмотреть это можно в браузере и в Search Console.
Быстрая проверка через поиск по сайту:
site:example.com inurl:?s=Если в выдаче есть страницы поиска, значит они уже доступны для индексации. Дополнительно проверьте исходный код таких страниц: есть ли там noindex, не закрыт ли URL в robots.txt и не генерируются ли канонические ссылки на саму страницу поиска.
Что смотреть в Search Console
- раздел «Страницы» — есть ли URL поиска в индексе;
- «Проверка URL» — как Google видит метатеги и каноникал;
- «Статистика сканирования» — не тратится ли бот на поисковые URL слишком часто.
Пошаговое решение
Самый надёжный вариант — отдать поисковым страницам noindex, follow. Тогда поисковик не будет включать их в индекс, но сможет переходить по ссылкам на результаты поиска, если они есть. Для WordPress это можно сделать через wp_robots, не трогая шаблоны вручную.
Вариант 1: добавить noindex через код
Подходит, если вы контролируете тему или используете дочернюю тему. Добавьте код в functions.php дочерней темы или в небольшой mu-plugin.
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант хорош тем, что он работает на уровне WordPress и не зависит от конкретного SEO-плагина. Но если у вас уже есть плагин, который управляет robots-метатегами, проверьте, не конфликтует ли он с этим фильтром.
Вариант 2: закрыть поиск через SEO-плагин
Если на сайте уже стоит SEO-плагин, часто проще использовать его настройки. Важно только убедиться, что он действительно ставит noindex именно на страницы поиска, а не просто меняет robots.txt. Запрет в robots.txt не гарантирует удаление URL из индекса, если они уже известны поисковику.
| Подход | Плюсы | Минусы |
|---|---|---|
Код через wp_robots | Прозрачно, без лишних зависимостей | Нужно следить за темой и обновлениями |
| SEO-плагин | Удобно для редактора и SEO-специалиста | Настройки могут отличаться между плагинами |
| robots.txt | Быстро ограничивает обход | Не решает проблему индексации уже известных URL |
Вариант 3: убрать поисковые URL из выдачи сайта
Если у вас в теме есть блоки с внутренним поиском, проверьте, не выводятся ли ссылки на поисковые результаты в меню, хлебных крошках или виджетах. Такие ссылки сами по себе не вредны, но они ускоряют обнаружение URL ботами. Иногда достаточно убрать автогенерацию ссылок на результаты поиска в шаблонах.
<?php if ( is_search() ) : ?>
<meta name="robots" content="noindex,follow" />
<?php endif; ?>Этот фрагмент полезен только как ориентир. В реальном проекте лучше не дублировать метатеги вручную, если уже используется wp_robots или SEO-плагин. Иначе легко получить два разных robots-мета в одной странице.
Проверка результата после внедрения
После правки не ограничивайтесь просмотром кода страницы. Нужно проверить, что поисковик видит именно то, что вы ожидали.
- Откройте страницу поиска в браузере и посмотрите исходный код.
- Убедитесь, что в
<meta name="robots">естьnoindex. - Проверьте, что страница не закрыта случайно через
nofollow, если вам важно сохранить переходы по внутренним ссылкам. - В Search Console отправьте URL на проверку и посмотрите, как он распознаётся.
- Через несколько дней проверьте отчёт по индексированию: URL поиска должен уходить из «Проиндексировано» или не попадать туда заново.
Если у вас есть доступ к серверным логам, полезно посмотреть, не уменьшилось ли количество обходов поисковых URL. Это особенно заметно на больших сайтах с активным внутренним поиском.
Частые ошибки и как их исправить
Закрыли только robots.txt
Это самая частая ошибка. Disallow в robots.txt мешает обходу, но не гарантирует исключение из индекса. Если URL уже известен поисковику, он может остаться в выдаче без содержимого или с фрагментом текста. Исправление простое: добавьте именно noindex.
Поставили noindex на весь сайт
Иногда фильтр написан слишком грубо и срабатывает не только на is_search(), но и на архивы, страницы пагинации или даже на главную. Это уже критическая ошибка. Проверяйте условие строго и тестируйте на нескольких типах страниц.
Сломали канонические ссылки
Если SEO-плагин или тема одновременно меняют canonical и robots, поисковик может получить противоречивые сигналы. В итоге страница поиска либо индексируется, либо выпадает с предупреждениями. Проверьте, что canonical указывает на саму страницу поиска только если это действительно нужно, а в большинстве случаев лучше не делать её канонической целью.
Ожидали мгновенного удаления из индекса
noindex не удаляет URL сразу. Поисковику нужно заново обойти страницу и увидеть новый метатег. Поэтому после внедрения не делайте выводы по одному дню наблюдений.
Чек-лист перед публикацией правки
- страницы поиска доступны для пользователей;
- на них стоит
noindex, follow; - robots.txt не используется как единственный способ закрытия;
- нет дублей метатега robots в теме и плагине;
- в Search Console можно проверить URL поиска;
- внутренние ссылки на поиск не создают лишние URL без необходимости;
- после правки проверен исходный код и кэш.
Что делать, если сайт на кэше или CDN
Если на сайте есть серверный кэш, плагин кэширования или CDN, обновление robots-метатега может не сразу попасть в ответ. Очистите кэш страницы поиска и, если нужно, кэш на уровне CDN. Иначе вы будете проверять старую версию и решите, что правка не сработала.
На практике полезно сначала открыть страницу поиска в режиме инкогнито, затем проверить заголовки ответа и только после этого смотреть исходный код. Если кэш отдаёт старую HTML-версию, поисковик увидит то же самое.
Когда лучше не закрывать поиск полностью
Если внутренний поиск у вас — важный навигационный инструмент и страницы результатов реально содержат полезный контент, можно оставить их открытыми для индексации выборочно. Но это редкий случай. Обычно лучше индексировать только нормальные посадочные страницы, а поиск держать как функциональность для посетителей.
Если нужна более широкая техническая чистка сайта — дубли, служебные страницы, лишние архивы и похожие SEO-ошибки — имеет смысл смотреть на комплексные инструменты вроде Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpvideo.ru&utm_medium=article&utm_campaign=zakryt-ot-indeksacii-stranicy-poiskovogo-zaprosa-v-wordpress. Но даже в этом случае логику закрытия поиска стоит проверить вручную, а не полагаться только на чекбокс в интерфейсе.