Внутренний поиск WordPress часто создает страницы, которые поисковикам не нужны: пустые выдачи, дубли по разным запросам, мусорные URL с параметрами. При этом сам поиск на сайте должен продолжать работать для пользователей и не ломать шаблон темы. Ниже — рабочая схема, которая закрывает именно индексирование, а не функциональность поиска.
Когда проблема действительно есть
Сначала стоит проверить, что речь именно о внутренних страницах поиска, а не о страницах результатов в стороннем плагине. В стандартном WordPress URL поиска обычно выглядит как /?s=запрос или как ЧПУ-форма, если тема или плагин ее добавляет. Если такие страницы попадают в индекс, это видно по отчетам поисковой системы, а иногда и по логам сервера: бот регулярно ходит по десяткам однотипных запросов.
Признаки, что индексацию поиска лучше закрыть
- в выдаче есть страницы с параметром
?s=и почти пустым сниппетом; - по одному и тому же контенту создаются десятки поисковых URL;
- внутренний поиск генерирует страницы без полезного контента, например для коротких или ошибочных запросов;
- в отчетах по сканированию растет число URL, которые не должны участвовать в индексации.
Если поиск на сайте используется как полноценный каталог или база знаний, закрывать его целиком не всегда правильно. В таком случае лучше оставить доступ пользователям, но убрать страницы поиска из индекса и дополнительно ограничить их обход.
Что именно нужно закрывать
Есть три разных задачи, и их часто путают:
- индексация — чтобы поисковик не показывал страницу поиска в результатах;
- обход — чтобы бот не тратил краулинговый бюджет на мусорные запросы;
- функциональность — чтобы поиск продолжал работать в интерфейсе сайта.
Для WordPress обычно достаточно закрыть индексацию через noindex и, при необходимости, добавить директиву в robots.txt. Но важно понимать: robots.txt сам по себе не гарантирует удаление уже проиндексированных страниц. Если URL уже в индексе, нужен именно noindex.
Пошаговое решение без плагина
Самый надежный вариант — добавить noindex,follow только для страниц поиска. Это не мешает пользователю пользоваться формой поиска и не требует менять шаблон целиком.
<?php
add_action('wp_head', function () {
if (is_search()) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
});Этот код можно добавить в functions.php дочерней темы или в небольшой mu-plugin. Для продакшена mu-plugin удобнее: он не зависит от смены темы и не теряется после обновления.
Если тема уже выводит собственные robots-мета-теги, проверьте, что не получится два тега robots одновременно. В таком случае лучше использовать фильтр, который меняет значение там, где это предусмотрено темой или SEO-плагином. Но если такого фильтра нет, отдельный вывод в wp_head обычно работает стабильно.
Дополнительно ограничить обход в robots.txt
Для снижения лишнего обхода можно закрыть поисковые URL в robots.txt. Это не замена noindex, а дополнительный слой.
User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /*?s=Здесь есть нюанс: разные сайты используют разные форматы URL поиска. Если у вас поиск работает только через /?s=, не нужно добавлять лишние правила наугад. Чем точнее правило, тем меньше риск случайно закрыть полезные страницы с параметрами.
Если используется SEO-плагин
У многих SEO-плагинов уже есть настройка для страниц поиска. Это удобнее, чем писать код, если у проекта нет жестких требований к кастомизации. Но проверять результат нужно все равно: иногда плагин закрывает только мета-тег, а в sitemap или шаблоне остаются лишние ссылки.
| Подход | Плюс | Минус |
|---|---|---|
| Код в теме или mu-plugin | Точный контроль над is_search() | Нужно поддерживать вручную |
| SEO-плагин | Быстро включается в админке | Зависит от конкретного плагина и его настроек |
| Только robots.txt | Просто добавить | Не убирает уже проиндексированные URL |
Если на сайте уже используется набор для технической чистки и SEO-ограничений, например Clearfy Pro, проверьте, не дублирует ли он ваши правила. Два разных источника noindex обычно не ломают сайт, но усложняют диагностику.
Как проверить, что решение сработало
После внедрения не ограничивайтесь просмотром исходного кода. Проверьте несколько уровней:
- Откройте страницу поиска в браузере и убедитесь, что в HTML есть
<meta name="robots" content="noindex,follow" />. - Проверьте, что поиск на сайте по-прежнему возвращает результаты для пользователя.
- Посмотрите исходный код и убедитесь, что нет второго conflicting-тега
robots. - Если URL уже был в индексе, отправьте его на повторное сканирование через инструменты поисковой системы и дождитесь переобхода.
Для быстрой локальной проверки удобно открыть URL поиска и выполнить:
curl -I "https://example.com/?s=test"
curl -s "https://example.com/?s=test" | grep -i robotsПервой командой вы не увидите мета-тег, потому что он в HTML, а не в заголовках. Но так можно быстро проверить, что страница отдает 200 OK и не редиректит куда-то неожиданно. Вторая команда помогает убедиться, что тег действительно присутствует в разметке.
Частые ошибки и как их исправить
Закрыли поиск в robots.txt, но не добавили noindex
Это самая частая ошибка. Бот может перестать обходить страницу, но уже известный URL все равно останется в индексе. Исправление простое: добавьте noindex,follow и дождитесь переобхода.
Сломали поиск на сайте
Обычно это происходит, когда вместо мета-тега начинают редактировать шаблон поиска или ставят редирект на главную. Пользователь должен получать результаты поиска, а не ошибку или пустую страницу. Не трогайте форму поиска и обработчик запроса, если задача только в индексации.
Закрыли слишком широкий шаблон URL
Иногда в robots.txt добавляют правило, которое задевает полезные страницы с параметрами сортировки, фильтрации или пагинации. Перед деплоем проверьте реальные URL сайта и не копируйте правила с чужого проекта без адаптации.
Оставили в индексе старые URL поиска
Если страницы поиска уже были проиндексированы, одного изменения на сайте мало. Нужно дождаться повторного обхода или вручную отправить URL на переобход. Иногда помогает временно оставить noindex и не блокировать страницу в robots.txt, чтобы бот смог увидеть директиву.
Что еще стоит проверить на сайте
Когда вы чистите индекс от мусорных поисковых страниц, полезно посмотреть и на соседние источники дублей: архивы, страницы автора, технические параметры, внутренние фильтры. Иначе вы решите одну проблему, а бот продолжит тратить ресурсы на другие однотипные URL.
- есть ли дубли из-за параметров
?replytocom=или похожих служебных ссылок; - не генерирует ли тема отдельные страницы для пустых результатов поиска;
- не попадают ли поисковые URL в XML-карту сайта;
- не выводит ли шаблон лишние ссылки на внутренний поиск в футере или хлебных крошках.
Если нужен более широкий контроль над технической чисткой и дублями, удобнее решать это на уровне набора правил, а не точечных правок в нескольких файлах. Но для конкретной задачи с поиском достаточно аккуратного noindex и проверки, что сайт не начал скрывать полезные страницы.