Внутренний поиск WordPress часто создаёт страницы, которые не нужны в поиске: результаты с пустыми запросами, дубли по разным параметрам, мусорные URL с ?s= и похожими хвостами. Если такие страницы попадают в индекс, они размывают качество сайта и мешают поисковикам тратить краулинговый бюджет на полезные материалы.
Задача здесь не в том, чтобы «сломать поиск», а в том, чтобы оставить его рабочим для пользователей и одновременно убрать результаты поиска из индекса. Ниже — рабочая схема без вымышленных хуков и без лишней магии.
Когда проблема действительно есть
Сначала проверьте, что именно индексируется. На практике чаще всего встречаются такие сценарии:
- в выдаче Google или Яндекса появляются URL вида
/ ?s=запрос; - поиск создаёт страницы с одинаковым контентом, но разными параметрами;
- в индексе есть пустые результаты поиска, которые отдают
200 OK; - поисковик регулярно обходит десятки или сотни бесполезных URL поиска;
- внутренний поиск генерирует страницы с пагинацией, которые не несут ценности.
Как быстро диагностировать
Проверьте несколько вещей вручную и через инструменты для вебмастеров:
- откройте URL поиска в браузере, например
https://site.ru/?s=test; - посмотрите исходный код страницы и наличие
noindexв<meta name="robots">; - проверьте заголовки ответа, если используете серверные правила;
- в Search Console или Яндекс.Вебмастере найдите страницы поиска в отчётах об индексировании;
- сравните, не появляются ли разные URL с одинаковой выдачей.
Если страница поиска возвращает обычный HTML без запрета индексации, поисковик вполне может её сохранить. Если при этом на сайте много запросов с параметрами, проблема быстро разрастается.
Что лучше: плагин, код или серверные правила
Есть три рабочих подхода. Выбор зависит от того, насколько у вас контролируемый проект.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| Плагин SEO | Если уже используется SEO-плагин и нужна быстрая настройка | Меньше кода, проще поддержка | Зависимость от интерфейса и логики плагина |
| Код в теме или мини-плагине | Если нужен точечный контроль без лишних зависимостей | Прозрачно, легко проверить | Нужно аккуратно сопровождать обновления |
| Серверные правила | Если нужно жёстко закрыть конкретные URL | Работает до загрузки WordPress | Легко ошибиться и закрыть лишнее |
Для большинства сайтов достаточно кода в WordPress: он понятен, не ломает поиск и позволяет гибко управлять мета-тегами и заголовками.
Пошаговое решение через код
Если у вас нет SEO-плагина или вы не хотите завязываться на его настройки, добавьте запрет индексации для страниц поиска через фильтр wp_robots. Это современный и безопасный способ для WordPress 5.7+.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
} );Этот код можно добавить в дочернюю тему или, лучше, в небольшой mu-plugin. Тогда настройка не потеряется при обновлении темы.
Если нужно ещё и убрать поиск из карты сайта
Обычно страницы поиска не должны попадать в sitemap вообще. Если у вас кастомная генерация ссылок или сторонний плагин, проверьте, что URL поиска туда не попадают. В стандартном WordPress поисковые страницы в sitemap не добавляются, но кастомные решения иногда нарушают это правило.
Если на сайте есть отдельные шаблоны для поиска, убедитесь, что они не выводят канонический URL на самих себя без необходимости. Для страниц поиска каноникал обычно не нужен как способ индексации; важнее именно noindex.
Диагностика после внедрения
После правки проверьте не только визуально, но и технически. Это экономит время, если настройка не сработала из-за кэша или конфликта плагинов.
- Откройте страницу поиска в режиме инкогнито.
- Посмотрите исходный код и найдите
noindex. - Проверьте заголовок ответа через
curl -Iили инструменты браузера. - Очистите кэш сайта, если используется плагин кэширования или CDN.
- Повторно проверьте URL через инспекцию в Search Console.
curl -I "https://site.ru/?s=test"Если вы используете кэш-плагин, не забывайте, что он может отдавать старую версию страницы с прежними мета-тегами. После очистки кэша проверка должна показывать актуальный HTML.
Частые ошибки и как их исправить
Добавили noindex, но страница всё равно в индексе
Это нормально в краткосрочной перспективе. Поисковику нужно время на повторный обход. Если страница давно в индексе, удаление не происходит мгновенно. Проверьте, что тег реально отдается в HTML, а не только в админке.
Закрыли поиск в robots.txt вместо noindex
Это частая ошибка. Запрет в robots.txt не гарантирует удаление уже проиндексированных страниц. Более того, если поисковик не может зайти на страницу, он не увидит мета-тег noindex. Для удаления из индекса обычно нужен именно доступ к странице с запретом индексации.
Сломали поиск для пользователей
Иногда в попытке закрыть индексацию разработчик начинает отдавать 404 или редиректить все поисковые URL на главную. Так делать не стоит: пользовательский поиск должен работать. Закрывайте от индексации, а не от доступа.
Конфликт с SEO-плагином
Если SEO-плагин уже управляет robots-мета, ваш код может быть перебит его настройками. В этом случае оставьте один источник правды: либо настройка в плагине, либо собственный код. Два механизма одновременно часто дают непредсказуемый результат.
Практические советы по безопасности и производительности
Страницы поиска нередко становятся источником лишней нагрузки. Если на сайте много запросов, подумайте о дополнительных мерах:
- ограничьте индексирование только для реальных результатов, а пустые запросы отдавайте с
noindex; - не кэшируйте бесконечно страницы поиска, если результаты зависят от динамического контента;
- проверьте, не создают ли сторонние плагины дополнительные параметры в URL;
- не используйте тяжёлые SQL-запросы в шаблоне поиска без необходимости;
- если поиск публичный и активно используется, следите за логами 404 и 429, чтобы не пропустить злоупотребления.
Если вам нужно одновременно убрать дубли, технические страницы и лишние архивы, имеет смысл посмотреть в сторону комплексной чистки SEO-слоя. Например, у Clearfy Pro есть инструменты для отключения дублей и технических страниц, но применять их нужно только после проверки, что они не конфликтуют с вашей темой и SEO-плагином.
Как понять, что решение сработало
Признаки корректной настройки простые и проверяемые:
- в HTML страницы поиска есть
noindex; - страница открывается для пользователя без ошибок;
- в Search Console URL перестаёт получать новые показы со временем;
- в отчётах по индексации уменьшается число бесполезных поисковых страниц;
- кэш не подменяет актуальную версию старой.
Если всё это выполняется, значит вы закрыли именно индексацию, а не доступ к поиску. Для WordPress это обычно и есть правильный баланс между SEO и удобством сайта.