Внутренний поиск WordPress часто создаёт страницы, которые не несут ценности для поиска: результаты по пустым запросам, мусорные параметры, длинные комбинации фильтров и повторяющиеся выдачи. Если такие URL попадают в индекс, они начинают конкурировать с нормальными страницами сайта и раздувают число технических страниц в отчётах Search Console.
Задача здесь не в том, чтобы «спрятать всё подряд», а в том, чтобы оставить полезные страницы сайта доступными для обхода, но закрыть именно страницы поиска и их вариации. Ниже — рабочая схема без выдуманных хуков и без лишней магии.
Когда проблема уже есть: что смотреть в первую очередь
Сначала проверьте, действительно ли в индекс попали страницы поиска. Обычно это видно по таким признакам:
- в отчёте
site:или в Search Console есть URL вида/search/...или страницы с параметром?s=; - в выдаче встречаются страницы с нулевым или почти нулевым количеством результатов;
- один и тот же запрос создаёт несколько URL из-за параметров сортировки, фильтров или UTM;
- в логах обхода много запросов к страницам поиска, но трафика с них нет.
Если сайт использует стандартный поиск WordPress, URL обычно строится через параметр s. Например: /?s=запрос. На некоторых темах и плагинах это может быть красивый путь вроде /search/запрос/, но суть проблемы та же: поисковые страницы редко должны индексироваться.
Что именно закрывать, а что оставить
Не стоит закрывать весь поиск без разбора, если он используется как навигационный инструмент внутри сайта. В большинстве случаев достаточно:
- закрыть страницы результатов поиска от индексации;
- не блокировать саму форму поиска для пользователей;
- не ломать обход важных страниц, на которые поиск ссылается;
- убрать из индекса пустые и бесполезные варианты запросов.
Пошаговое решение: noindex для страниц поиска и корректный robots.txt
Самый надёжный вариант — отдать поисковым страницам мета-тег noindex,follow. Это позволяет поисковикам не включать страницу в индекс, но не запрещает обход ссылок на ней. Для WordPress это можно сделать через wp_robots.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );
Этот код можно добавить в дочернюю тему или в небольшой mu-plugin. Он сработает только на страницах поиска и не затронет обычные записи, страницы и архивы.
Если у вас есть отдельный шаблон поиска или плагин, который выводит собственный HTML, проверьте, не добавляет ли он уже свой meta robots. Дублирование директив иногда приводит к странному поведению, особенно если один плагин ставит index, а другой — noindex.
Когда нужен robots.txt
robots.txt полезен не для удаления URL из индекса, а для снижения лишнего обхода. Если поисковый робот постоянно ходит по однотипным поисковым URL с параметрами, можно ограничить их сканирование. Но важно помнить: Disallow не равен noindex. Если страница уже в индексе, один только robots.txt её оттуда не уберёт.
Пример аккуратной настройки:
User-agent: *
Disallow: /?s=
Disallow: /search/
Такой вариант уместен, если на сайте действительно используются эти URL. Но не закрывайте через robots.txt всё подряд, если не уверены в структуре. Для удаления из индекса приоритетнее noindex на самих страницах.
Если поиск создаёт дубли из-за параметров
Частая ситуация: одна и та же выдача доступна по нескольким адресам — с параметрами сортировки, фильтра, страницы и меток кампаний. Тогда проблема уже не только в поиске, а в каноникализации. Для таких случаев проверьте:
- есть ли на странице корректный
rel="canonical"; - не индексируются ли URL с параметрами
orderby,filter_*,utm_*; - не создаёт ли тема отдельные шаблоны для результатов поиска и архивов;
- не подставляет ли плагин SEO собственную каноническую ссылку на неподходящий URL.
Если каноникал указывает на саму поисковую страницу, это не всегда ошибка. Но если у вас десятки вариаций одного и того же запроса, лучше свести их к одной версии и закрыть остальные от индексации.
Сравнение подходов: плагин, код или только robots.txt
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
Код через wp_robots | Нужен точный контроль над поисковыми страницами | Работает на уровне HTML, не ломает обход ссылок | Нужно добавить код и проверить тему/плагины |
| SEO-плагин | Если уже используется Yoast SEO, Rank Math или аналог | Удобно управлять мета-тегами без правки темы | Легко получить конфликт настроек |
| Только robots.txt | Нужно снизить обход мусорных URL | Просто внедрить | Не удаляет уже проиндексированные страницы |
Если на сайте уже стоит SEO-плагин, сначала проверьте его настройки. Иногда достаточно включить noindex для поисковых страниц в интерфейсе плагина. Но если нужен предсказуемый результат без зависимости от настроек, код через wp_robots обычно надёжнее.
Проверка результата после внедрения
После изменений не ограничивайтесь визуальной проверкой страницы. Нужно убедиться, что поисковая выдача действительно получила нужные директивы.
- Откройте страницу поиска в браузере.
- Посмотрите исходный код страницы и найдите
meta name="robots". - Проверьте, что там есть
noindexиfollow. - Убедитесь, что обычные страницы сайта не получили эти директивы по ошибке.
- В Search Console отправьте URL на повторную проверку, если он уже был в индексе.
Если используете командную строку, можно быстро проверить заголовок и HTML через curl:
curl -L https://example.com/?s=test | grep -i robotsДля красивых URL поиска проверяйте именно тот адрес, который реально генерирует тема. Иногда форма поиска ведёт на один URL, а индексируются совсем другие варианты с параметрами.
Частые ошибки и как их исправить
Ошибка 1: закрыли поиск в robots.txt, но страницы остались в индексе
Это ожидаемо. Robots.txt запрещает обход, но не гарантирует удаление уже известных URL. Добавьте noindex на сами страницы поиска и дождитесь переобхода.
Ошибка 2: поставили noindex на все архивы
Так можно случайно убрать из индекса полезные категории, теги или страницы автора, если логика условия написана слишком широко. Ограничивайте проверку только is_search() или конкретным шаблоном.
Ошибка 3: SEO-плагин и тема спорят между собой
Если один компонент выводит index,follow, а другой — noindex, итог зависит от того, какой код сработал последним. Уберите дублирующую логику в одном месте.
Ошибка 4: закрыли поиск, но оставили мусорные параметры
Параметры utm_*, сортировки и фильтров могут создавать отдельные URL. Для них нужна отдельная стратегия: каноникал, очистка ссылок и, при необходимости, правила в SEO-плагине.
Практические советы по безопасности и производительности
Если поиск на сайте активно используется, не делайте его слишком тяжёлым. Длинные запросы, wildcard-поиск и сложные фильтры могут нагружать базу данных. Полезно проверить:
- есть ли индексы по полям, которые участвуют в поиске, если используется кастомная логика;
- не генерирует ли форма поиска лишние запросы к базе на каждом символе;
- не открыты ли поисковые URL для спама и ботов без ограничений;
- не создают ли сторонние плагины отдельные страницы результатов, которые дублируют стандартный поиск WordPress.
Если нужен более широкий контроль над дублями и техническими страницами, стоит смотреть в сторону инструментов, которые умеют управлять индексацией и чисткой сайта на уровне настроек. Например, в Clearfy Pro есть набор опций для SEO и технической оптимизации: https://wpshop.ru/plugins/clearfy?utm_source=wpassist.ru&utm_medium=article&utm_campaign=kak-zapretit-indeksaciyu-stranic-poiskovoy-vydachi-wordpress
Мини-чек-лист перед публикацией изменений
- На страницах поиска есть
noindex,follow. - Обычные записи и страницы не затронуты.
- В
robots.txtнет случайного запрета на важные разделы. - Канонический URL не указывает на мусорную вариацию.
- Проверены URL с параметрами
s,utm_*и сортировкой. - В Search Console отправлен запрос на переобход проблемных страниц.
Если после правок поисковые страницы всё ещё появляются в индексе, обычно причина одна из трёх: нет noindex в HTML, страница блокируется раньше, чем робот видит директиву, или на сайте остались альтернативные URL той же выдачи. В таких случаях проще идти от фактического HTML и логов обхода, чем пытаться лечить проблему только настройками SEO-плагина.