Как закрыть поиск по сайту WordPress от индексации и убрать дубли страниц

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

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

Когда поиск WordPress начинает плодить дубли

Типичный сценарий простой: пользователь вводит запрос, получает URL вида /?s=текст или /search/текст/, а поисковая система видит это как отдельную страницу. Если запросов много, а контента мало, в индекс попадают страницы с одинаковой структурой, но разным параметром поиска. Иногда к ним добавляются сортировки, фильтры и пагинация, и тогда количество URL растёт ещё быстрее.

Проверять нужно не только сам факт индексации, но и то, что именно отдаёт шаблон поиска: заголовок, мета-описание, canonical, статус ответа. Если страница поиска отдаёт 200 OK и не содержит noindex, поисковик вполне может оставить её в индексе.

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

  • Есть ли в индексе URL с ?s= или /search/.
  • Не открываются ли результаты поиска без ограничений по robots и meta robots.
  • Не дублируются ли страницы поиска через разные форматы URL.
  • Не генерирует ли тема отдельные шаблоны поиска с лишними блоками и похожими сниппетами.

Диагностика: как понять, что проблема действительно есть

Начинать лучше не с кода, а с проверки факта. Откройте в поиске по сайту несколько разных запросов и посмотрите исходный HTML. Если в <head> нет noindex, а canonical указывает на саму страницу поиска, это уже повод вмешаться. Дополнительно проверьте отчёт по индексированию в панели вебмастера и поищите в выдаче запросы вида site:example.ru inurl:?s=.

Ещё один полезный тест — посмотреть, как WordPress формирует заголовок страницы поиска. Если там выводится только запрос без контекста, а результаты пустые или почти пустые, такая страница почти не несёт ценности для индекса. В этом случае закрытие от индексации обычно оправдано.

// Быстрая проверка в браузере: откройте исходный код страницы поиска и найдите meta robots и canonical.

Пошаговое решение: закрываем поиск от индексации

Есть три практических подхода: через SEO-плагин, через код в теме или через комбинацию обоих методов. Если на сайте уже стоит плагин, который умеет управлять meta robots и canonical, проще использовать его. Если нужен точечный контроль без лишних настроек — добавьте небольшой код в functions.php дочерней темы или в собственный мини-плагин.

ПодходПлюсыМинусы
SEO-плагинБыстро, без правки кода, удобно для редактораЗависит от настроек и логики плагина
Код в темеТочный контроль, минимум лишнегоНужно следить за обновлениями темы
КомбинированноМожно закрыть поиск и оставить внутренний поиск рабочимЕсть риск конфликтов, если правила задвоятся

Вариант через код: noindex для страниц поиска

Этот способ подходит, если вы хотите закрыть именно результаты поиска, не трогая обычные страницы сайта. Код ниже добавляет noindex,follow на страницы поиска и убирает canonical, если тема или плагин подставляют его некорректно.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_search() ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }

    return $robots;
} );

add_filter( 'get_canonical_url', function( $canonical ) {
    if ( is_search() ) {
        return false;
    }

    return $canonical;
} );

Если ваша тема не использует wp_robots корректно, можно дополнительно проверить, не выводится ли старый meta robots вручную в шаблоне header.php. В таком случае лучше убрать дублирующий вывод, а не накладывать второй слой правил поверх первого.

Вариант через SEO-плагин

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

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

Что делать с robots.txt и почему этого недостаточно

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

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

Когда robots.txt всё-таки уместен

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

Проверка результата после внедрения

После изменений не ограничивайтесь визуальной проверкой. Откройте несколько поисковых URL и убедитесь, что в исходном коде есть noindex. Затем проверьте HTTP-ответ и canonical. Если используете командную строку, можно быстро посмотреть заголовки ответа:

curl -I "https://example.ru/?s=test"

В браузере или через инструменты разработчика проверьте, что страница отдаёт обычный 200 OK, но при этом не претендует на индексацию. После этого отправьте URL на повторную проверку в панели вебмастера и понаблюдайте, как меняется статус в течение следующих обходов.

Полезно также сделать ручной поиск по сайту:

  • site:example.ru inurl:?s=
  • site:example.ru inurl:/search/
  • site:example.ru "Результаты поиска"

Если страницы всё ещё всплывают, значит, где-то остался альтернативный шаблон, старый canonical или кэш отдает прежнюю версию HTML.

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

Ошибка 1. Закрыли поиск только в кэше, а не в шаблоне

Иногда после настройки кэш-плагина кажется, что всё работает, но это только старая версия страницы. После очистки кэша проблема возвращается. Исправление простое: меняйте логику генерации meta robots в коде или в SEO-плагине, а не в статическом кеше.

Ошибка 2. Поставили noindex, но оставили конфликтующий canonical

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

Ошибка 3. Закрыли всё через robots.txt

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

Ошибка 4. Забыли про тему и кастомные шаблоны

Некоторые темы выводят отдельный шаблон поиска с собственным header.php или SEO-метками. Тогда правка в одном месте не срабатывает на всех шаблонах. Проверьте, нет ли в теме дублирующего вывода meta robots, title или canonical.

Практические советы по безопасности и производительности

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

С точки зрения безопасности важно не допускать, чтобы поисковый запрос попадал в шаблон без экранирования. В кастомных темах запрос должен выводиться через функции WordPress, а не напрямую из $_GET['s']. Это не только вопрос XSS, но и вопрос корректного HTML в заголовках и мета-тегах.

<?php
if ( is_search() ) {
    printf(
        '<h1>%s</h1>',
        esc_html( get_search_query() )
    );
}

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

Мини-чек-лист перед публикацией изменений

  • Проверен исходный код страницы поиска.
  • На странице поиска стоит noindex,follow.
  • Canonical не конфликтует с задачей.
  • Robots.txt не используется как единственный способ закрытия.
  • Кэш очищен после правок.
  • Проверка в панели вебмастера запущена повторно.

Если после всех правок страницы поиска всё ещё появляются в индексе, обычно проблема не в самом noindex, а в дублирующем шаблоне, старом кэше или альтернативном URL-формате. В таких случаях лучше пройтись по всем вариантам адреса и закрыть их одинаково, чем добавлять новые костыли поверх старых.

Вам также может быть интересно:

Как закрыть открытые XML sitemap в WordPress и не сломать индексацию
19.09.2026
Как закрыть поиск по сайту WordPress от индексации и убрать дубли страниц
23.09.2026
Как закрыть дубли архивов тегов в WordPress и не сломать индексацию
16.09.2026
×
Сделай WordPress мощнее!

Скидка -20% на топовые премиум плагины

Выбрать плагин сейчас ⋙