Страницы внутреннего поиска в WordPress часто попадают в индекс как тонкие и дублирующие: у них мало уникального контента, много мусорных запросов и почти нет ценности для поиска. При этом просто «запретить всё подряд» нельзя — можно сломать выдачу по сайту, пагинацию результатов и поведение формы поиска.
Ниже разберём рабочий сценарий: как определить, что именно индексируется, чем закрывать поиск от роботов, когда достаточно noindex, а когда лучше дополнительно убрать URL из sitemap и подсветить канонический адрес.
Как понять, что проблема именно в индексации поиска
Сначала проверьте, какие URL реально попали в поиск. В WordPress внутренний поиск обычно выглядит так: /?s=запрос или /search/запрос/, если используется кастомная структура. В индексе такие страницы часто появляются с разными параметрами, а в отчётах по сканированию — как страницы с низкой ценностью.
Признаки, что поиск нужно закрывать
- в поиске Яндекса или Google видны URL вида
?s=; - в Search Console растёт число страниц без трафика и с одинаковыми заголовками;
- на сайте есть много пустых или почти пустых результатов поиска;
- боты активно сканируют запросы с мусорными параметрами;
- в логах видно, что поиск создаёт лишнюю нагрузку на базу данных.
Если у вас поиск используется как полноценная посадочная страница, например для каталога с фильтрацией, закрывать его целиком не всегда правильно. Тогда нужно точечно настраивать индексацию только для «пустых» и технических запросов.
Что делать: три рабочих подхода
Для внутреннего поиска в WordPress обычно используют один из трёх вариантов: noindex через мета-тег, запрет обхода в robots.txt или полное исключение URL из генерации ссылок и sitemap. На практике чаще всего нужен не один способ, а комбинация.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
noindex | Нужно убрать URL из индекса, но оставить обход | Не ломает переходы, проще контролировать | Страница всё ещё может сканироваться |
robots.txt | Нужно снизить нагрузку от ботов | Быстро ограничивает обход | Не гарантирует удаление из индекса |
| Код + каноникал | Нужна точная логика для разных запросов | Гибко и предсказуемо | Требует проверки после внедрения |
Пошаговое решение через код
Если тема или SEO-плагин не дают нужного контроля, проще добавить логику в functions.php дочерней темы или в небольшой mu-plugin. Для большинства сайтов достаточно закрыть от индексации все страницы поиска и при этом оставить их доступными для пользователей и ботов.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});
add_filter('wp_robots', function ($robots) {
if (is_search()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Этот вариант хорош тем, что не зависит от конкретного SEO-плагина. Если у вас уже подключён Yoast SEO, Rank Math или другой плагин, проверьте, не добавляет ли он свой noindex автоматически. Дублировать логику не нужно: лишние мета-теги иногда путают диагностику.
Если поиск должен оставаться доступным только для пользователей
Тогда можно дополнительно закрыть его от обхода в robots.txt. Это не заменяет noindex, но снижает лишнюю активность ботов на мусорных запросах.
User-agent: *
Disallow: /?s=
Disallow: /search/Важно: директива Disallow не удаляет уже проиндексированные URL. Если поиск уже попал в индекс, сначала ставьте noindex, а потом уже ограничивайте обход.
Как убрать поиск из sitemap и не сломать SEO
Страницы внутреннего поиска не должны попадать в XML-карту сайта. В нормальной конфигурации WordPress они туда и не попадают, но это стоит проверить, если sitemap генерирует SEO-плагин или кастомный код.
Если у вас есть кастомные ссылки на результаты поиска, не добавляйте их в список индексируемых URL. Для плагинов это обычно настраивается в разделе исключений, а для кода — фильтром, который формирует sitemap. Если такой логики нет, лучше не усложнять и оставить sitemap только для записей, страниц, рубрик и других реальных посадочных страниц.
Проверка результата после внедрения
После изменений не ограничивайтесь просмотром исходника. Проверьте цепочку целиком: HTML, заголовки ответа и поведение в поисковых системах.
- Откройте URL поиска вида
/?s=test. - Проверьте исходный код страницы: должен быть
noindex,follow. - Убедитесь, что страница не закрыта от обхода слишком жёстко, если вам нужен переход по результатам.
- Посмотрите заголовки ответа через DevTools или
curl -I. - В Search Console отправьте проверку URL и дождитесь переобхода.
curl -I "https://example.com/?s=test"В ответе не обязательно должен быть отдельный HTTP-заголовок X-Robots-Tag, если вы используете мета-тег в HTML. Но если закрываете поиск на уровне сервера, тогда заголовок уже должен быть виден.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt, но URL остались в индексе
Это нормальная ситуация: robots.txt запрещает обход, но не гарантирует удаление уже известных поисковикам URL. Решение — добавить noindex и дождаться переобхода.
Поставили noindex на все страницы, включая полезные результаты
Такое бывает, если поиск используется как фильтр каталога или как внутренняя навигация по базе знаний. В этом случае разделите сценарии: технические запросы закрывайте, а полезные посадочные страницы оставляйте индексируемыми вручную.
Сломали форму поиска после изменения permalink-логики
Иногда разработчики меняют шаблон ссылки поиска, но не проверяют, как форма собирает action-URL. После этого поиск начинает вести на несуществующий маршрут или отдаёт 404. Проверяйте, что форма отправляет запрос на рабочий адрес, а шаблон результата реально существует.
Дублируете логику SEO-плагина своим кодом
Если плагин уже добавляет noindex, а вы сверху вставляете ещё один мета-тег, это не всегда критично, но усложняет диагностику. Лучше оставить один источник правды: либо плагин, либо код.
Когда стоит использовать плагин, а когда код
Если задача типовая и сайт ведётся контент-менеджером, удобнее настроить это через SEO-плагин. Если нужен контроль над конкретными типами запросов, лучше код. Для сайтов, где одновременно нужно чистить дубли, управлять мета-тегами и техническими страницами, можно посмотреть в сторону Clearfy Pro: у него есть инструменты для технической оптимизации и удаления лишнего мусора, но внедрять всё равно нужно осознанно, а не включать все опции подряд.
Практическое правило простое: если вы можете описать условие в одном-двух предложениях, код будет надёжнее. Если настройка нужна редактору без доступа к файлам, выбирайте плагин с понятным интерфейсом.
Чек-лист перед публикацией изменений
- Проверил, какие URL поиска реально индексируются.
- Добавил
noindex,followтолько для страниц поиска. - Убедился, что полезные посадочные страницы не закрыты случайно.
- Проверил, что поиск не попал в sitemap.
- Посмотрел ответ сервера и исходный код страницы.
- Отправил URL на переобход в Search Console.
Если после внедрения поиск всё ещё появляется в индексе, не спешите усиливать запреты. Сначала проверьте, не остались ли внешние ссылки на эти URL, нет ли их в старых sitemap и не генерирует ли тема отдельные архивы поиска. Обычно проблема не в одном месте, а в связке из нескольких источников.