Если на сайте WordPress в индекс попадают страницы внутреннего поиска, это обычно не приносит трафик и только плодит тонкие URL вида ?s=запрос. Для SEO это лишний шум: поисковик тратит обход на бесполезные страницы, а в отчётах появляются дубли и мусорные адреса. Закрыть такие страницы можно несколькими способами, но не все они одинаково полезны. Самый надёжный вариант — не пускать поисковые роботы на результаты поиска и одновременно не давать им индексировать сами URL.
Ниже разберём, что именно нужно закрывать, какой способ выбрать и как проверить, что всё работает.
Что именно нужно закрыть в WordPress
Внутренний поиск WordPress обычно создаёт страницы результатов по адресу с параметром s. Например, https://site.ru/?s=seo. Это не отдельные полноценные страницы контента, а динамические выдачи по запросу пользователя. Если таких URL много, они быстро превращаются в источник тонких страниц.
Задача здесь не в том, чтобы скрыть поиск от пользователей. Поиск на сайте должен работать. Нужно лишь сделать так, чтобы его результаты не индексировались и не попадали в поиск Яндекса и Google как отдельные страницы.
Самый практичный вариант: закрыть поиск через robots.txt и noindex
Для WordPress обычно используют два уровня защиты. Первый — запретить обход поисковых URL в robots.txt. Второй — добавить для страниц поиска мета-тег noindex, чтобы даже при попадании в обход они не индексировались.
Если выбирать только один способ, noindex полезнее, потому что он работает на уровне самой страницы. Но для внутреннего поиска лучше использовать оба подхода: так меньше шансов, что мусорные URL останутся в индексе или будут продолжать обходиться роботами.
1. Запретите обход поисковых URL в robots.txt
Если у вас есть доступ к корневому robots.txt, добавьте туда запрет на параметры поиска WordPress. Для большинства сайтов достаточно такого правила:
User-agent: *
Disallow: /*?s=
Disallow: /search/
Первое правило закрывает стандартные URL поиска WordPress с параметром s. Второе пригодится, если на сайте используется человеко-понятный путь поиска вроде /search/запрос/ через тему или плагин.
Если у вас уже есть robots.txt, не удаляйте существующие директивы. Просто добавьте эти строки в подходящее место. После сохранения проверьте, что файл открывается по адресу /robots.txt и отдает нужное содержимое.
Есть важная оговорка: robots.txt не удаляет URL из индекса сам по себе. Он только ограничивает обход. Если поисковик уже знает такие страницы, одного Disallow может быть недостаточно для их исчезновения из выдачи.
2. Добавьте noindex для результатов поиска
Надёжнее всего вывести на страницах поиска мета-тег noindex,follow. Тогда поисковик не будет индексировать саму страницу, но сможет переходить по ссылкам на ней. Для WordPress это удобно сделать через хук wp_head.
Добавьте в файл functions.php дочерней темы или в собственный мини-плагин такой код:
add_action( 'wp_head', function () {
if ( is_search() ) {
echo '<meta name="robots" content="noindex,follow" />' . "\n";
}
} );
Здесь условие is_search() срабатывает только на страницах результатов поиска WordPress. На обычных страницах сайта код ничего не выводит.
Если вы используете SEO-плагин, проверьте, не добавляет ли он уже собственный noindex для поиска. Дублировать одинаковые мета-теги не нужно, хотя критичной ошибки обычно не будет. Лучше оставить один источник управления индексированием.
Когда одного robots.txt недостаточно
Многие пытаются закрыть поиск только через robots.txt, а потом удивляются, что URL всё равно видны в поиске. Это нормальная ситуация: если страница уже известна поисковику по внешним ссылкам, логам или старой индексации, запрет обхода не гарантирует её удаление из выдачи.
Поэтому для уже проиндексированных поисковых страниц правильная схема такая:
- оставить доступ к странице для робота;
- отдать на ней
noindex; - после переобхода поисковик уберёт её из индекса;
- когда мусорные URL исчезнут, можно дополнительно ограничить их в
robots.txt, если это нужно по политике сайта.
Если закрыть всё сразу через Disallow, робот может перестать заходить на страницу и не увидеть мета-тег noindex. В итоге URL останется в индексе дольше, чем ожидалось.
Если у вас SEO-плагин, проверьте его настройки
На многих сайтах WordPress уже стоит плагин для SEO, и он может сам управлять индексированием страниц поиска. Это удобнее, чем править код вручную, если в плагине есть нужная опция. Но важно не дублировать настройки в нескольких местах.
Проверьте, есть ли в вашем SEO-плагине отдельная настройка для noindex архивов поиска или результатов поиска. Если такая опция есть, включите её и не добавляйте второй раз тот же мета-тег через functions.php. Иначе потом будет сложнее понять, откуда берётся итоговый код в <head>.
Если плагин не умеет закрывать поиск отдельно, используйте код через wp_head. Это простой и предсказуемый вариант, который не зависит от конкретного плагина.
Как проверить, что страницы поиска действительно закрыты
После настройки не ограничивайтесь визуальной проверкой сайта. Нужно убедиться, что робот видит именно то, что вы ожидаете.
Проверьте три вещи:
- на странице поиска в исходном коде есть
<meta name="robots" content="noindex,follow" />; - в
robots.txtприсутствуют нужные правила для?s=или/search/; - страница поиска открывается в браузере и работает для посетителя, но не выглядит как обычная индексируемая посадочная страница.
Для быстрой проверки можно открыть исходный код страницы поиска и найти строку robots. Если вы добавляли код вручную, убедитесь, что он выводится только на поисковых страницах, а не на всём сайте.
Если используете Google Search Console или Яндекс.Вебмастер, можно отправить URL поиска на повторную проверку после изменений. Но не ждите мгновенного результата: удаление из индекса зависит от частоты обхода и состояния уже проиндексированных страниц.
Что делать с уже попавшими в индекс поисковыми URL
Если поисковые страницы уже сидят в выдаче, одной настройки на сайте может быть мало. Обычно нужно дать поисковику время на переобход. На практике помогает связка из noindex и нормального ответа страницы без редиректа на главную.
Не стоит массово ставить 301 с поисковых URL на главную страницу. Это выглядит как попытка подменить смысл страницы и часто создаёт новые проблемы: поисковик получает нерелевантный редирект, а пользователь — неожиданный переход. Для результатов поиска правильнее именно закрытие от индексации, а не принудительная замена контента.
Если на сайте много старых поисковых URL, можно дополнительно проверить, не генерируются ли они внутренними ссылками, виджетами или шаблоном. Иногда проблема не в индексации как таковой, а в том, что сайт сам активно создаёт десятки ссылок на поиск по разным запросам.
Коротко о рабочей схеме
Для WordPress самый надёжный вариант такой: результаты поиска остаются доступными пользователям, но для роботов получают noindex,follow, а в robots.txt добавляется запрет на обход поисковых URL. Это убирает лишние страницы из индекса и помогает не раздувать сайт тонкими адресами.
Если у вас уже стоит SEO-плагин, сначала проверьте его настройки. Если нужной опции нет, добавьте мета-тег через wp_head. После этого обязательно проверьте исходный код страницы поиска и содержимое robots.txt. Именно такая проверка показывает, что закрытие от индексации сделано корректно, а не только «на словах».