wpcore.ru wordpress wpcore.ru

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

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

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

Как понять, что проблема уже есть

Сначала проверьте не абстрактно «есть ли индекс», а конкретные признаки. В Google Search Console и Яндекс Вебмастере ищите страницы с параметром s= или URL поиска в отчётах по страницам. Если в выдаче встречаются адреса вида / ?s=..., /search/... или URL с параметрами сортировки и поиска, значит закрытие не настроено либо настроено частично.

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

  • отчёты по индексированию и исключённым страницам;
  • лог сервера: частые запросы к URL поиска от ботов;
  • исходный код страницы поиска: есть ли noindex и канонический URL;
  • robots.txt: не блокирует ли он только часть вариантов поиска;
  • плагины SEO и кеша: не конфликтуют ли они между собой.

Если поиск на сайте нужен пользователям, закрывать его через robots.txt в одиночку — слабое решение. Робот может не увидеть запрет, но уже успеть обнаружить URL по внешним или внутренним ссылкам. Надёжнее сочетать noindex, корректный canonical и, при необходимости, ограничение обхода на уровне robots.

Рабочая схема: что именно нужно сделать

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

1. Добавить noindex на страницы поиска

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

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

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

2. Указать canonical на саму страницу поиска или на чистый URL

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

add_filter('wpseo_canonical', function ($canonical) {
    if (is_search()) {
        return home_url('/');
    }
    return $canonical;
});

Этот пример рассчитан на Yoast SEO. Если у вас другой SEO-плагин, проверьте его фильтры или настройку canonical в интерфейсе. Важно не копировать код вслепую: если canonical уже управляется плагином, ручная подмена может дать конфликт.

3. Исключить поиск из sitemap

В sitemap не должно быть страниц поиска и URL с параметрами. Обычно SEO-плагины не добавляют их туда автоматически, но если у вас кастомная генерация карты сайта или нестандартные типы записей, проверьте это отдельно. Любой URL с ?s= в sitemap — явный сигнал к исправлению.

Если нужен жёсткий контроль: вариант через шаблон и заголовки

Иногда одной мета-разметки недостаточно, особенно если на сайте есть агрессивные боты или старые страницы поиска уже успели попасть в индекс. Тогда можно добавить заголовок X-Robots-Tag для ответов поиска. Это полезно, когда вы хотите управлять индексацией не только через HTML, но и на уровне ответа сервера.

add_action('template_redirect', function () {
    if (is_search() && !headers_sent()) {
        header('X-Robots-Tag: noindex, follow', true);
    }
});

Такой подход не заменяет <meta name="robots">, а дополняет его. Для поисковиков это более надёжный сигнал, особенно если страница может отдаваться без полноценного шаблона или через кэш.

Сравнение подходов

СпособКогда подходитПлюсыМинусы
Настройка в SEO-плагинеЕсли сайт уже использует Yoast, Rank Math или аналогБез кода, проще поддерживатьЗависит от конкретного плагина и его настроек
meta robots noindexНужен быстрый и понятный контроль в темеРаботает на уровне HTMLМожно случайно продублировать с плагином
X-Robots-TagНужен жёсткий сигнал для ответов поискаРаботает даже вне HTMLТребует аккуратной проверки заголовков

Пошаговая проверка после внедрения

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

  1. Откройте страницу поиска с запросом, например /?s=тест.
  2. Посмотрите исходный код и убедитесь, что есть noindex,follow.
  3. Проверьте заголовки ответа через DevTools или curl -I.
  4. Убедитесь, что canonical не указывает на случайный URL с параметрами.
  5. Проверьте sitemap: там не должно быть URL поиска.
  6. Через несколько дней посмотрите отчёты в Search Console и Вебмастере на предмет снижения количества страниц поиска в индексе.
curl -I "https://example.com/?s=тест"

В ответе ищите X-Robots-Tag: noindex, follow, если вы добавляли заголовок. Если заголовка нет, значит код не сработал или его перехватывает кеш/прокси.

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

Закрыли поиск только в robots.txt

Это частая ошибка. Robots.txt не удаляет уже известные URL из индекса и не гарантирует, что поисковик не увидит их через внутренние ссылки. Исправление: добавьте noindex и проверьте canonical.

Поставили noindex, но оставили поиск в sitemap

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

Сломали поиск из-за редиректа

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

Дублируют canonical и robots из двух мест

Если SEO-плагин уже генерирует canonical, а вы добавили свой фильтр, в коде может появиться конфликт. Исправление: оставьте один источник истины — либо плагин, либо код темы/му-плагина.

Что ещё проверить для безопасности и производительности

Страницы поиска часто становятся точкой лишней нагрузки. Боты перебирают запросы, кеш раздувается, а база получает лишние обращения. Если сайт крупный, имеет смысл ограничить слишком частые запросы к поиску на уровне кеша или WAF, но без блокировки нормальных пользователей.

  • не индексируйте пустые поисковые запросы;
  • не выводите на странице поиска тяжёлые блоки, если запрос пустой;
  • проверьте, не создаёт ли тема отдельные URL для сортировки и фильтров;
  • уберите поиск из меню, если он генерирует мусорные переходы и не нужен как основной сценарий.

Если вы используете плагины для SEO и чистки дублей, вроде Clearfy Pro, проверьте, не дублируют ли они ручные настройки. В таких задачах важна не «магия плагина», а предсказуемость: один источник правил, одна логика индексации, одна точка проверки.

Когда решение считается успешным

Считайте задачу закрытой, если выполняются все условия: страницы поиска отдают noindex, canonical не уводит в случайные URL, sitemap не содержит поисковых страниц, а в отчётах поисковых систем постепенно уменьшается число проиндексированных URL с параметром s=. Если этого не происходит, значит где-то остался второй источник генерации страниц — чаще всего это SEO-плагин, кэш или кастомный шаблон поиска.

×

AI-плагин

WPGPT
Сам создает статьи для вашего сайта WordPress

SEO и мета-теги

Парсинг конкурентов

Изображения

Комментарии

Подробнее