Внутренний поиск WordPress часто оставляют как есть, а потом получают в индексе мусорные URL вида ?s=, пустые выдачи и дубли с разными параметрами. Проблема не в самом поиске, а в том, что поисковые системы начинают тратить обход на страницы, которые не дают ценности пользователю.
Ниже — рабочая схема: что именно закрывать, чем отличается robots.txt от noindex, и как не сломать полезные страницы сайта.
Какие страницы поиска реально нужно закрывать
В WordPress поиск может существовать в нескольких вариантах. Чаще всего это:
- страница поиска по запросу
?s=ключевое+слово; - пустая выдача поиска без запроса;
- страницы поиска с дополнительными параметрами, если тема или плагин их добавляет;
- внутренние search-URL, которые генерируются формой поиска в шапке, сайдбаре или блоках.
Если у вас есть нормальные посадочные страницы, рубрики и теги, внутренний поиск обычно не должен конкурировать с ними в индексе. Исключение — сайты, где поиск сам по себе является полезной страницей, например, каталог с фильтрами и осмысленной выдачей. Но это уже отдельный сценарий.
Диагностика: что именно попало в индекс
Перед правками проверьте, какие URL уже индексируются. Это можно сделать в Google Search Console, через поиск по сайту или по логам сервера. Ищите URL с параметром s=, а также страницы, которые возвращают пустую выдачу, но доступны для обхода.
Полезно проверить и исходный код страницы поиска. Если тема уже выводит noindex на search-страницах, дублировать это в robots.txt не всегда нужно. Если же метатега нет, а URL индексируются, придется закрывать на уровне шаблона или через SEO-плагин.
Что смотреть в первую очередь
- есть ли в индексе URL вида
/?s=...; - открываются ли пустые результаты поиска с кодом
200 OK; - не закрыт ли поиск только в
robots.txtбезnoindex; - не создаёт ли тема отдельный шаблон поиска с лишними параметрами.
Что выбрать: robots.txt, noindex или оба варианта
Здесь важно не путать задачи. robots.txt управляет обходом, а noindex — индексацией. Если страница уже в индексе, один только Disallow не гарантирует её исчезновение: поисковик может сохранить URL без контента, если увидел его раньше.
| Подход | Когда уместен | Ограничение |
|---|---|---|
robots.txt | Чтобы не тратить crawl budget на поиск | Не убирает уже проиндексированные URL сам по себе |
noindex | Чтобы исключить страницу из индекса | Страница должна быть доступна для обхода |
| Оба варианта | Когда нужно и закрыть обход, и убрать индексирование | Нужна аккуратная настройка, чтобы не закрыть лишнее |
На практике для поиска WordPress чаще используют связку: noindex, follow на search-страницах и аккуратный Disallow только для технических URL, если они действительно не нужны поисковику.
Пошаговое решение без плагина
Если не хотите ставить отдельный SEO-плагин только ради одной задачи, можно закрыть поиск через код темы или мини-плагин. Самый безопасный вариант — добавить метатег noindex, follow на страницы поиска.
<?php
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex, follow" />' . "\n";
}
} );Этот код не мешает обходу ссылок на странице поиска, но сигнализирует поисковым системам не индексировать саму страницу. Для большинства сайтов этого достаточно.
Если нужно дополнительно закрыть обход технических search-URL в robots.txt, можно добавить правило через фильтр robots_txt:
<?php
add_filter( 'robots_txt', function ( $output, $public ) {
$output .= "\nUser-agent: *\n";
$output .= "Disallow: /?s=\n";
$output .= "Disallow: /search/\n";
return $output;
}, 10, 2 );Но здесь есть нюанс: путь поиска зависит от темы и структуры сайта. Если у вас поиск работает только через параметр ?s=, правило Disallow: /search/ может быть лишним. Не копируйте оба правила без проверки.
Если используете SEO-плагин
Во многих проектах проще и надежнее управлять индексированием через SEO-плагин, если он уже стоит на сайте. Например, в Clearfy Pro есть инструменты для закрытия технических страниц и удаления дублей, если вам нужен централизованный контроль без правки шаблонов.
Плюс плагина в том, что вы не привязываетесь к теме. Минус — лишний слой настроек, который надо документировать, чтобы через полгода не искать, где именно включили noindex.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой страницы. Нужно проверить три вещи: HTML, заголовки ответа и поведение в индексации.
- Откройте страницу поиска в браузере и посмотрите исходный код: должен быть
<meta name="robots" content="noindex, follow" />. - Проверьте, не закрыли ли вы случайно важные страницы сайта в
robots.txt. - В Search Console отправьте страницу на повторный обход, если она уже была в индексе.
- Убедитесь, что поиск по сайту по-прежнему работает для пользователя.
Если хотите проверить быстро через консоль, можно посмотреть заголовки ответа:
curl -I https://example.com/?s=testДля search-страницы это не покажет метатег, но поможет убедиться, что URL отдает ожидаемый код ответа и не редиректит куда-то неожиданно.
Частые ошибки и как их исправить
Закрыли только robots.txt
Это самая частая ошибка. Если URL уже в индексе, Disallow не убирает его мгновенно. Добавьте noindex на саму страницу и дождитесь переобхода.
Поставили noindex на все архивы по ошибке
Иногда в шаблоне темы условие написано слишком широко, и под него попадают рубрики или записи. Проверяйте, что код срабатывает только на is_search().
Закрыли поиск, но оставили внутренние ссылки на пустые выдачи
Если форма поиска отправляет пользователя на бессмысленные запросы, это уже UX-проблема. Проверьте placeholder, автоподстановки и страницы с нулевым результатом. Иногда полезнее улучшить шаблон поиска, чем просто закрывать его от индексации.
Использовали несколько SEO-решений одновременно
Когда noindex ставит тема, SEO-плагин и еще отдельный сниппет в functions.php, результат становится непредсказуемым. Оставьте один источник правды: либо тема, либо плагин, либо мини-плагин.
Практические советы по безопасности и производительности
Не редактируйте родительскую тему напрямую. Если решение вшито в functions.php, используйте дочернюю тему или небольшой mu-plugin. Так вы не потеряете правки после обновления.
Если сайт большой, не закрывайте от индексации всё подряд в надежде «почистить SEO». Сначала проверьте, какие URL реально создают мусор и расходуют обход. Иногда достаточно закрыть только внутренний поиск, а не трогать архивы или теги.
И еще один практический момент: если на сайте есть публичный поиск с полезной выдачей, не закрывайте его автоматически. Сначала сравните, как он выглядит для пользователя и для поисковика. Иногда лучше оставить страницу открытой, но доработать шаблон, чтобы она не выглядела как тонкий контент.
Если нужен более широкий контроль над дублями, техническими страницами и базовой SEO-гигиеной, удобно держать это в одном инструменте, а не собирать из разрозненных сниппетов. Но даже в этом случае проверка вручную обязательна: код и настройки должны совпадать с тем, что реально отдает сайт.