Страницы внутреннего поиска в WordPress часто попадают в индекс не потому, что сайт «сломался», а потому что поисковик видит их как обычные URL с параметром ?s=. На небольшом сайте это выглядит безобидно, но на практике такие страницы создают мусор в индексе, размазывают краулинговый бюджет и иногда плодят дубли с почти одинаковым содержимым.
Если у вас в Search Console уже есть URL вида / ?s= или /search/, задача не в том, чтобы «спрятать всё подряд», а в том, чтобы оставить поиск рабочим для пользователей и одновременно не отдавать его страницы в индекс.
Когда это действительно проблема
Сначала стоит понять, что именно индексируется. В WordPress внутренний поиск может открываться как через параметр ?s=запрос, так и через ЧПУ-путь, если тема или плагин его так настроили. Поисковики обычно не любят такие страницы, потому что содержимое на них нестабильное: сегодня по запросу есть 12 результатов, завтра 3, а через неделю — ни одного.
Типичные признаки проблемы:
- в индексе появляются URL с
?s=и разными поисковыми запросами; - в отчётах Search Console растёт число «Просканировано, но не проиндексировано» для страниц поиска;
- в логах сервера или аналитике видно, что роботы часто заходят на внутренний поиск;
- страницы поиска конкурируют с нормальными посадочными страницами по похожим запросам.
Что не стоит делать
Нельзя просто закрыть поиск в robots.txt и считать вопрос решённым. Если страница уже попала в индекс, запрет в robots.txt не уберёт её оттуда быстро и предсказуемо. Более того, поисковик может продолжать хранить URL без контента, если не увидит явный сигнал noindex.
Также не стоит массово ставить редирект с поиска на главную. Это ломает пользовательский сценарий и выглядит как мягкая ошибка 404 для реального посетителя.
Какой способ выбрать: noindex, robots.txt или код
Для внутреннего поиска WordPress обычно есть три рабочих подхода. Они не взаимоисключающие, но решают разные задачи.
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
Meta robots noindex,follow | Если нужно убрать страницы поиска из индекса, но оставить доступ для пользователей и роботов | Явный сигнал поисковику, безопасно для сайта | Нужно внедрять аккуратно в шаблон или через SEO-плагин |
Запрет в robots.txt | Если хотите уменьшить обход, но не как основной метод удаления из индекса | Просто и быстро | Не гарантирует удаление уже проиндексированных URL |
| Код в теме/плагине | Если нужен полный контроль без зависимости от SEO-плагина | Точный сценарий, можно учитывать тип запроса | Нужно тестировать после обновлений темы |
Если у вас уже стоит SEO-плагин, чаще всего проще и надёжнее добавить noindex через него. Если плагина нет или нужен точечный контроль, лучше сделать это кодом в дочерней теме или мини-плагине.
Диагностика: где именно WordPress отдаёт страницы поиска
Перед правкой проверьте, какой URL реально используется. В WordPress поиск по умолчанию работает через параметр s. Это значит, что поисковый URL может выглядеть так: https://example.com/?s=запрос. Некоторые темы делают красивый путь вроде /search/запрос/, но логика запрета остаётся той же.
Откройте страницу поиска вручную, затем проверьте:
- есть ли в HTML метатег
meta name="robots"; - не отдаёт ли страница канонический URL на саму себя;
- не закрыта ли она уже в SEO-плагине;
- не блокируется ли она в
robots.txtраньше, чем вы успели поставитьnoindex.
Если у вас есть доступ к консоли, можно быстро проверить заголовки и HTML:
curl -I