Как закрыть от индексации страницы внутреннего поиска в WordPress

Страницы внутреннего поиска в WordPress часто попадают в индекс сами по себе: у них есть уникальный URL, параметры запроса и иногда нормальный HTML-шаблон. Для поисковика это выглядит как отдельная страница, хотя по смыслу это не контент, а служебная выдача. Если не ограничить индексацию, в отчётах начинают всплывать десятки и сотни URL вида ?s=, а краулинговый бюджет уходит на мусорные страницы.

Задача здесь не в том, чтобы отключить поиск для посетителей. Нужно оставить поиск рабочим, но дать роботам понятный сигнал: такие страницы не должны индексироваться и не должны попадать в карту сайта.

Как понять, что проблема именно в поисковых страницах

Сначала проверьте, действительно ли в индекс или в обход попадают URL поиска. В WordPress это обычно адреса с параметром s, например / ?s=запрос или /search/запрос/ — зависит от настроек постоянных ссылок и темы. Самый простой способ диагностики — посмотреть отчёт в Google Search Console и выгрузить список страниц с параметрами поиска.

Что смотреть в первую очередь

  • страницы с параметром s в отчёте «Страницы» или «Индексирование»;
  • запросы вида site:example.com inurl:?s= в поиске;
  • логи сервера, если бот часто ходит по поиску с разными запросами;
  • исходный код страницы поиска: есть ли там <meta name="robots" и какой статус отдаёт URL.

Если страница поиска отдаёт 200 OK и содержит обычный контентный шаблон, поисковик вполне может решить, что это полноценная страница. Если там ещё и есть хлебные крошки, заголовок, описание и блоки похожих материалов, риск индексации только выше.

Что лучше: noindex, robots.txt или редирект

Для страниц внутреннего поиска обычно не нужен редирект. Пользователь должен видеть результаты поиска, а не улетать на главную. Закрывать такие URL через robots.txt тоже не лучший вариант: робот может не увидеть запрет на уровне страницы и всё равно оставить URL в индексе как найденный по ссылкам.

На практике рабочая схема такая: оставить страницу доступной для пользователей, но добавить noindex, follow и убрать её из sitemap. Если поиск у вас построен на стандартном параметре ?s=, этого обычно достаточно.

ПодходКогда уместенМинус
noindex на странице поискаПочти всегдаНужно проверить, что тег реально выводится
robots.txtКак дополнительная мераНе гарантирует удаление уже известных URL
Редирект на главнуюРедко, если поиск вообще не нуженЛомает пользовательский сценарий

Пошаговое решение через код темы или мини-плагин

Если у вас есть доступ к теме или собственному плагину, проще всего добавить метатег robots для поисковой выдачи. Это не требует тяжёлых плагинов и работает предсказуемо.

1. Добавьте noindex для страниц поиска

Вставьте код в functions.php дочерней темы или в небольшой mu-plugin. Он добавит noindex, follow только на поисковые страницы.

<?php
add_action( 'wp_head', function () {
    if ( is_search() ) {
        echo '<meta name="robots" content="noindex, follow" />' . "\n";
    }
}, 1 );

Если у вас уже подключён SEO-плагин, проверьте, не выводит ли он свой robots-тег. Два одинаковых тега с разными директивами — частая причина путаницы. В таком случае лучше настроить правило в самом SEO-плагине, а не дублировать его кодом.

2. Уберите поисковые URL из sitemap

Страницы поиска не должны попадать в XML-карту сайта. В стандартном WordPress они обычно туда и не попадают, но некоторые SEO-плагины или кастомные решения могут добавлять лишние URL по ошибке. Проверьте sitemap вручную: в нём не должно быть ?s=, /search/ и похожих служебных адресов.

Если sitemap генерируется плагином, ищите настройку исключения таксономий, архивов и служебных страниц. Если карта сайта собирается кодом, фильтруйте массив URL до вывода.

3. При необходимости отдавайте 404 или 410 для пустых служебных запросов

Это уже более жёсткий вариант и подходит не всем. Если у вас есть технические URL поиска, которые не должны существовать вообще, можно отдавать 404 для пустого запроса или для мусорных параметров. Но для обычного поиска по сайту так делать не стоит: пользователь должен получать результаты, а не ошибку.

<?php
add_action( 'template_redirect', function () {
    if ( is_search() && '' === trim( get_search_query() ) ) {
        global $wp_query;
        $wp_query->set_404();
        status_header( 404 );
        nocache_headers();
        include get_query_template( '404' );
        exit;
    }
} );

Этот пример полезен только как защита от пустых или бессмысленных запросов. Не используйте его для нормального поиска по контенту.

Если используете SEO-плагин или Clearfy Pro

Если на сайте уже стоит SEO-плагин, сначала проверьте его настройки. Во многих случаях проще закрыть поиск от индексации через интерфейс, чем поддерживать собственный код. Например, в Clearfy Pro есть инструменты для технической чистки сайта и управления служебными страницами; это удобно, если нужно централизованно убрать дубли и мусорные URL. Подробности можно посмотреть на странице плагина: https://wpshop.ru/plugins/clearfy.

Но даже если используете плагин, не отключайте проверку вручную. Плагины иногда меняют поведение после обновлений темы или SEO-модуля, и служебные страницы снова начинают светиться в индексе.

Как проверить, что решение сработало

После внедрения не ограничивайтесь визуальной проверкой страницы в браузере. Нужно убедиться, что поисковик видит именно те сигналы, которые вы ожидаете.

  • откройте страницу поиска и проверьте исходный код на наличие <meta name="robots" content="noindex, follow";
  • посмотрите HTTP-ответ через DevTools или curl -I — страница должна отдавать обычный 200, если вы не делали отдельную логику для пустых запросов;
  • проверьте sitemap: поисковых URL там быть не должно;
  • в Search Console отправьте страницу на проверку URL, если она уже была в индексе;
  • через несколько обходов проверьте, исчез ли рост новых URL с параметром s.

Пример быстрой проверки через консоль:

curl -s https://example.com/?s=test | grep -i robots

Если команда возвращает строку с noindex, значит тег действительно попал в HTML. Если нет — ищите конфликт с темой, SEO-плагином или кешем.

Частые ошибки и как их исправить

Думать, что robots.txt решает всё

Запрет в robots.txt не удаляет уже известные URL из индекса и не мешает поисковику хранить их как найденные. Для служебных страниц поиска этого недостаточно. Используйте noindex на самой странице.

Ставить редирект на главную

Так делают, когда хотят «спрятать» поиск, но в итоге ломают пользовательский сценарий и получают странное поведение в аналитике. Если поиск нужен, он должен работать. Если не нужен совсем — лучше отключить его функционально, а не маскировать редиректом.

Не учитывать кеш

Если на сайте есть page cache или CDN, старый HTML может продолжать отдавать страницу без noindex. После правки очистите все уровни кеша: плагин кеширования, серверный кеш, CDN, браузерный кеш.

Дублировать robots-теги

Иногда тема, SEO-плагин и кастомный код одновременно выводят разные директивы. В результате робот получает противоречивые сигналы. Оставьте один источник правды: либо настройка в плагине, либо код в теме.

Что ещё стоит проверить рядом с поиском

Если вы уже занялись служебными URL, посмотрите и на соседние проблемы: пагинацию результатов поиска, пустые запросы, страницы с сортировкой и фильтрами, если они есть в теме. Эти URL тоже могут плодить дубли и шум в индексации. Для технически аккуратного сайта полезно держать под контролем не только сам поиск, но и все его производные.

Отдельно проверьте, не попадают ли в индекс страницы с параметрами, которые не меняют контент, например ?replytocom, ?amp в неподходящей конфигурации или служебные фильтры темы. Принцип тот же: если URL не несёт самостоятельной ценности, он не должен конкурировать с нормальными страницами сайта.

Как закрыть дубли страниц пагинации в WordPress
19.09.2026
Как закрыть дубли архивов авторов и тегов в WordPress
16.09.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше