Страницы внутреннего поиска в WordPress часто попадают в индекс как тонкие и бесполезные URL: с пустой выдачей, с десятками почти одинаковых запросов и с параметрами в адресе. Для поисковиков это не лучший сигнал, а для сайта — лишние дубли и расход краулингового бюджета. Если у вас в индексе уже есть такие страницы, закрывать их нужно аккуратно: не ломая сам поиск для пользователей и не пряча полезные результаты.
Ниже — рабочая схема: как понять, что проблема именно в поисковых URL, чем их закрывать, как проверить результат и какие ошибки встречаются чаще всего.
Когда внутренний поиск становится проблемой
Не каждый сайт обязан закрывать поиск от индексации. Но если URL вида /search/..., /?s=... или страницы с параметрами поиска начинают появляться в отчётах, это уже повод проверить настройки. Особенно если:
- поиск генерирует много URL с разными запросами, но одинаковой структурой;
- часть страниц выдаёт пустой результат;
- в индексе есть страницы с параметрами сортировки, фильтрации или пагинации поиска;
- в Search Console растёт число страниц с низкой ценностью;
- в логах видно, что бот регулярно ходит по мусорным поисковым URL.
Что именно нужно закрывать
Обычно речь идёт не о форме поиска на сайте, а о страницах результатов поиска. Пользователь должен продолжать искать, а поисковик — не индексировать сами выдачи. Это разные вещи. Форма поиска может оставаться в шаблоне, а URL с результатами — получать noindex или запрет в robots.txt в зависимости от вашей схемы.
Диагностика: как понять, что в индексе именно поисковые страницы
Сначала проверьте, как формируется URL поиска на вашем сайте. В стандартном WordPress это обычно /?s=запрос, но темы и плагины нередко переписывают адреса в более «красивый» вид. Дальше смотрим, что уже проиндексировано.
Проверка через поиск по сайту и Search Console
В Google Search Console откройте отчёт по страницам и поищите URL с параметром s= или с сегментом поиска в пути. Дополнительно проверьте вручную:
site:example.com inurl:s=Если видите в выдаче страницы поиска, откройте несколько URL и посмотрите исходный код. Ищите:
<meta name="robots" content="noindex">;- заголовки
X-Robots-Tagв ответе сервера; - канонический URL, который случайно указывает на саму поисковую страницу;
- редиректы, которые ведут на неочевидные адреса.
Если noindex уже стоит, но страницы всё равно висят в индексе, проблема может быть в том, что робот давно их просканировал и ещё не переобработал. Тогда нужно дождаться переобхода и убрать причины, из-за которых URL продолжает генерироваться и ссылаться внутри сайта.
Как закрыть страницы поиска: три рабочих подхода
Есть три нормальных варианта. Выбор зависит от темы, плагинов и того, как у вас устроен поиск.
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| noindex на страницах поиска | Если нужно оставить поиск для пользователей, но убрать выдачу из индекса | Гибко, безопасно для UX | Нужно корректно внедрить в шаблон или SEO-плагин |
| robots.txt disallow | Если бот слишком активно ходит по поисковым URL | Снижает обход мусорных страниц | Не гарантирует удаление уже известных URL из индекса |
| Комбинация noindex + canonical | Если есть несколько вариантов URL поиска | Лучше контролирует дубли | Нужно следить, чтобы canonical не был сам на себя |
Вариант 1: добавить noindex для страниц поиска
Самый практичный путь — вывести для поисковых страниц мета-тег noindex,follow. Тогда страница не будет индексироваться, но ссылки на ней останутся доступны для обхода.
Если у вас свой шаблон или дочерняя тема, можно добавить условие в functions.php:
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Это рабочий базовый вариант, но если у вас уже подключён SEO-плагин, лучше не дублировать мета-теги из двух мест. Иначе получите конфликт: один плагин ставит index, другой — noindex.
Вариант 2: закрыть поисковые URL в robots.txt
Если бот слишком часто ходит по поисковым страницам, можно дополнительно ограничить обход в robots.txt. Для стандартного WordPress с параметром s= это выглядит так:
User-agent: *
Disallow: /*?s=
Disallow: /search/Но здесь важно понимать ограничение: robots.txt не удаляет URL из индекса сам по себе. Если страница уже известна поисковику, одного запрета на обход может быть недостаточно. Поэтому в большинстве случаев robots.txt используют как дополнение, а не как единственный механизм.
Вариант 3: использовать SEO-плагин или чистку дублей
Если у вас уже стоит SEO-плагин, проверьте, умеет ли он управлять индексированием поисковых страниц без ручного кода. В некоторых случаях удобнее включить настройку в интерфейсе, чем поддерживать собственный хук. Если на сайте много технических дублей, полезно смотреть в сторону инструментов для чистки лишних страниц и SEO-настроек, например Clearfy Pro: https://wpshop.ru/plugins/clearfy.
Но и здесь правило то же: не включайте одновременно несколько механизмов, которые делают одно и то же. Сначала определите, кто именно отвечает за robots-метки и canonical, потом уже настраивайте закрытие.
Пошаговая настройка без лишних дублей
Если нужен предсказуемый результат, действуйте по этой схеме.
- Проверьте, какой URL генерирует поиск на вашем сайте:
?s=,/search/или другой формат. - Определите, есть ли уже noindex в исходном коде страниц поиска.
- Уберите конфликтующие правила в SEO-плагинах и теме.
- Добавьте noindex для поисковых страниц.
- При необходимости добавьте ограничение в robots.txt.
- Проверьте canonical и убедитесь, что он не указывает на саму поисковую выдачу как на основную страницу.
- Запросите переобход в Search Console для нескольких примеров URL.
Пример более аккуратной реализации через фильтр
Если вы используете SEO-плагин, иногда удобнее не печатать мета-тег вручную, а подключиться к фильтру плагина. Но конкретный фильтр зависит от плагина, поэтому здесь лучше опираться на документацию установленного решения. Для темы без SEO-плагина можно оставить простой вариант через wp_head, показанный выше.
Как проверить, что решение сработало
Проверка должна быть не только визуальной. Смотрите на три уровня: HTML, ответ сервера и индекс.
- HTML: на странице поиска должен быть
noindexв<meta name="robots">. - Ответ сервера: если вы используете
X-Robots-Tag, проверьте заголовки через DevTools илиcurl -I. - Индекс: через несколько переобходов URL должен исчезать из отчётов или получить статус исключённой страницы.
Проверить заголовки можно так:
curl -I https://example.com/?s=wordpressЕсли вы добавляли мета-тег в шаблон, откройте исходный код страницы и убедитесь, что тег выводится только на поисковых URL, а не на всех страницах сайта. Это частая ошибка при неаккуратном условии.
Частые ошибки и как их исправить
1. Закрыли поиск в robots.txt, но не поставили noindex
В результате бот перестал обходить URL, но старые адреса всё ещё могут висеть в индексе. Исправление простое: добавьте noindex и дождитесь переобхода.
2. Случайно закрыли весь сайт
Такое бывает, если условие в wp_head написано слишком широко. Например, без is_search() или с ошибкой в логике. После этого поисковик может увидеть noindex на обычных страницах. Проверяйте шаблон на нескольких типах страниц: главная, запись, рубрика, поиск.
3. Canonical ведёт на саму поисковую выдачу
Если canonical указывает на URL поиска, вы фактически подтверждаете его как основную страницу. Для поисковых страниц canonical обычно не нужен, либо должен вести на более релевантную категорию, если это действительно обосновано структурой сайта.
4. Дублируются правила из темы и SEO-плагина
Один источник ставит index, другой — noindex. В итоге поведение становится непредсказуемым. Оставьте один источник правды: либо тема, либо плагин, либо серверный заголовок.
5. Закрыли только один формат URL
На сайте может быть и /?s=..., и красивый /search/..., и параметры сортировки. Проверьте все варианты, которые реально генерируются шаблоном и внутренними ссылками.
Что делать с безопасностью и производительностью
Сама индексация поисковых страниц — это не только SEO-вопрос. Если поиск работает тяжело, он может создавать лишнюю нагрузку на базу данных. Особенно если запросы длинные, а поиск идёт по большому каталогу записей.
- ограничьте количество внутренних ссылок на поисковые URL;
- не используйте поиск как основной навигационный элемент, если есть нормальные рубрики и фильтры;
- проверьте, не генерирует ли тема бесконечные вариации URL поиска;
- если поиск часто используется, посмотрите логи медленных запросов и кеширование страниц, где это допустимо.
Если у вас есть возможность, лучше не плодить поисковые страницы, а направлять пользователя к рубрикам, тегам или нормальной таксономии. Тогда и индекс будет чище, и обход — экономнее.
Короткий чек-лист перед публикацией правок
- Проверил формат URL поиска на сайте.
- Убедился, что noindex выводится только на поисковых страницах.
- Проверил, нет ли конфликта с SEO-плагином.
- Добавил robots.txt только как дополнительную меру, а не вместо noindex.
- Проверил canonical и заголовки ответа.
- Отправил несколько URL на переобход в Search Console.
Если после этого поисковые страницы всё ещё появляются в индексе, обычно проблема не в одном теге, а в том, что на сайт продолжают вести внутренние ссылки на эти URL или шаблон генерирует несколько вариантов одной и той же выдачи. В таком случае сначала убирают источник дублей, а уже потом ждут переиндексации.