Внутренний поиск WordPress часто попадает в индекс сам по себе: страницы вида ?s= начинают ранжироваться, создают дубли и размывают качество обхода. На небольшом сайте это выглядит как мелочь, но на практике поисковики могут тратить время на мусорные результаты, а в отчётах появятся URL с пустыми или нерелевантными сниппетами.
Задача здесь не в том, чтобы «спрятать поиск любой ценой», а в том, чтобы корректно закрыть от индексации именно страницы результатов поиска, при этом оставить сам поиск рабочим для пользователя.
Когда проблема действительно есть
Проверять нужно не по ощущениям, а по фактам. Откройте поиск по сайту и посмотрите, какой URL формируется. В классическом WordPress это обычно /?s=запрос или человекочитаемый вариант, если тема или плагин его меняют. Затем проверьте, есть ли такие страницы в индексе через поиск по сайту в Google или Яндексе и через отчёты в Search Console / Вебмастере.
Типичные признаки:
- в индексе есть URL с параметром
s; - поисковик показывает страницы результатов вместо целевых материалов;
- в логах обхода много запросов к внутреннему поиску;
- в выдаче появляются пустые или почти пустые страницы поиска.
Что именно нужно закрывать
Обычно закрывают не сам поиск как функцию, а страницы результатов поиска. Это важно: форма поиска, AJAX-поиск или подсказки могут оставаться доступными, если они не создают индексируемые HTML-страницы.
Если у вас есть отдельные страницы поиска, созданные плагином, проверьте их отдельно. Иногда проблема не в WordPress как таковом, а в теме или поисковом плагине, который генерирует полноценные архивы результатов.
Рабочая схема: noindex для результатов поиска и запрет обхода в robots.txt
Самый надёжный вариант — поставить noindex,follow на страницы поиска и дополнительно закрыть их в robots.txt, если это не мешает вашей архитектуре. Но важно понимать разницу: robots.txt не убирает URL из индекса, если он уже туда попал. Для удаления из индекса нужен именно noindex.
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Многие плагины умеют закрывать страницы поиска без кода. Если же нужен точечный контроль, можно добавить фильтр в тему или мини-плагин.
Вариант через код
Этот способ подходит, если вы хотите не зависеть от интерфейса плагина и держать правило в коде проекта:
<?php
add_filter('wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});
Фильтр wp_robots работает в современных версиях WordPress и позволяет менять директивы без ручной правки <meta name="robots">. Это безопаснее, чем вставлять метатеги в шаблон напрямую, потому что вы не ломаете совместимость с другими компонентами, которые тоже работают с robots-метками.
Если нужен жёсткий запрет обхода
Для некоторых сайтов имеет смысл добавить правило в robots.txt. Например, если внутренний поиск создаёт слишком много мусорных запросов:
User-agent: *
Disallow: /?s=
Disallow: /search/
Но не используйте это как единственную меру. Если страница уже в индексе, поисковик может ещё долго её показывать. Сначала нужен noindex, потом уже ограничение обхода, если оно действительно оправдано.
Пошаговая настройка без лишнего риска
- Проверьте, как формируется URL поиска на вашем сайте.
- Посмотрите, есть ли страницы поиска в индексе.
- Добавьте
noindex,followдля страниц поиска. - При необходимости ограничьте обход в
robots.txt. - Проверьте, не генерирует ли тема отдельные шаблоны для поиска с лишними блоками и ссылками.
- После изменения отправьте страницу на переобход в поисковых системах.
Если вы используете SEO-плагин, не дублируйте правила в нескольких местах одновременно. Два разных источника robots-меток часто приводят к конфликтам: один выводит index, другой — noindex, и итог становится непредсказуемым.
Сравнение подходов
| Способ | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Если уже используется на сайте | Быстро, без кода, удобно для редактора | Зависимость от настроек и интерфейса плагина |
Код через wp_robots | Если нужен контроль в проекте | Прозрачно, легко ревьюить в Git | Нужно аккуратно вносить в тему или mu-plugin |
robots.txt только | Как дополнительная мера | Просто и быстро | Не убирает уже проиндексированные URL |
Как проверить, что решение сработало
Проверка должна быть не визуальной, а технической. Откройте страницу поиска и посмотрите исходный код: в нём должна быть директива noindex или эквивалентная настройка от SEO-плагина. Затем проверьте ответ сервера и HTML через инструменты разработчика или curl.
curl -I "https://example.com/?s=test"
В HTML-ответе ищите метатег robots или заголовки, если они используются. После этого проверьте, что страница всё ещё открывается для пользователя, но не претендует на индексирование.
Дополнительно полезно:
- запросить URL в Search Console и посмотреть, как робот видит страницу;
- проверить, исчезают ли новые URL поиска из отчётов индексации;
- посмотреть серверные логи на предмет лишних обходов.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt, но не добавили noindex
Это самая частая ошибка. Если URL уже в индексе, он может там остаться. Исправление простое: верните обход на время, добавьте noindex и дождитесь переобхода.
Поставили noindex на весь сайт через шаблон
Иногда разработчик добавляет условие слишком широко, и под раздачу попадают не только результаты поиска, но и обычные страницы. Проверяйте условие is_search() и не переносите его в общий шаблон без теста.
Конфликтуют SEO-плагин и код темы
Если плагин уже управляет robots-метками, а тема добавляет свои, итоговый HTML может содержать противоречивые директивы. Оставьте один источник истины: либо плагин, либо код проекта.
Закрыли поиск, но не убрали внутренние ссылки на мусорные URL
Если тема или плагин генерируют ссылки на пустые запросы, поисковик всё равно будет их находить. Проверьте шаблоны поиска, виджеты и блоки с автоподстановкой запросов.
Что ещё стоит проверить рядом с поиском
Если вы уже занялись индексацией, имеет смысл посмотреть и соседние источники дублей: страницы архивов автора, тегов, вложений и служебные URL. На небольших проектах именно они чаще всего создают лишний шум в индексе. Здесь полезно не распыляться, а пройтись по сайту по чек-листу и закрывать только то, что действительно не должно ранжироваться.
- страницы вложений без контента;
- пустые архивы тегов;
- служебные страницы с параметрами;
- дубли с пагинацией, если они не несут ценности;
- страницы поиска по сайту.
Если нужен более широкий набор инструментов для чистки дублей и технической SEO-настройки, можно посмотреть Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но ставить плагин только ради одной директивы не обязательно — для точечной задачи часто достаточно кода и проверки индексации.