WordPress Notes Wordpresses

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

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

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

Когда поисковые страницы становятся проблемой

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

  • в поисковой выдаче появляются страницы с параметром ?s=;
  • в Search Console растёт число страниц с дублирующимся или малополезным контентом;
  • в логах или аналитике заметны частые заходы на пустые поисковые запросы;
  • поисковые страницы создают лишние переходы внутри сайта и размывают краулинговый бюджет.

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

Диагностика: что именно индексируется

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

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

  • поиск по сайту в Google с оператором site:example.com inurl:?s=;
  • отчёт об индексировании в Google Search Console;
  • реакцию страницы поиска на запросы с пустым и непустым параметром s;
  • наличие канонического URL и мета-тега robots в HTML.

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

Какой способ выбрать: robots.txt, noindex или код

Для WordPress есть несколько рабочих подходов. Они не взаимозаменяемы, и важно понимать разницу.

ПодходЧто делаетКогда подходитОграничение
robots.txtЗапрещает обходКогда нужно снизить нагрузку на обходНе убирает уже проиндексированные URL
noindexПросит не индексировать страницуКогда нужно убрать результаты поиска из выдачиСтраница всё ещё может обходиться
Код в теме или плагинеДаёт точечный контрольКогда нужен предсказуемый результат без зависимости от SEO-плагинаНужно аккуратно поддерживать при обновлениях

Если цель — именно убрать дубли из индекса, одного robots.txt обычно недостаточно. Практичнее поставить noindex на поисковые страницы и, если нужно, дополнительно ограничить обход.

Пошаговое решение без плагина

Самый надёжный вариант — добавить логику в дочернюю тему или в собственный небольшой плагин. Так вы не зависите от настроек темы и не теряете поведение после обновления.

Шаг 1. Добавьте мета-тег noindex для результатов поиска

WordPress умеет определять страницу поиска через is_search(). На таких страницах можно вывести noindex,follow, чтобы робот не индексировал выдачу, но мог переходить по ссылкам дальше.

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

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

Шаг 2. Отдайте корректный заголовок для пустых результатов

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

<?php
add_filter('document_title_parts', function ($parts) {
    if (is_search()) {
        $parts['title'] = 'Поиск по сайту';
    }
    return $parts;
});

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

Шаг 3. При необходимости закройте поиск в robots.txt

Это дополнительная мера, а не замена noindex. Она полезна, если бот слишком активно ходит по параметрам поиска и создаёт нагрузку.

User-agent: *
Disallow: /?s=
Disallow: /search/

Но здесь есть нюанс: если URL уже в индексе, запрет в robots.txt не гарантирует его исчезновение. Для удаления из выдачи нужен именно noindex или возврат 404/410 для несуществующих страниц.

Если нужен более жёсткий вариант: 410 для пустого поиска

Иногда на сайте нет смысла показывать страницу поиска без запроса. В таком случае можно отдавать 410 Gone для пустых поисковых запросов. Это уже более агрессивный сценарий, и его стоит применять только если вы понимаете последствия для UX.

<?php
add_action('template_redirect', function () {
    if (is_search() && trim((string) get_search_query()) === '') {
        status_header(410);
        nocache_headers();
        wp_die('Страница поиска недоступна.', 'Gone', ['response' => 410]);
    }
});

Такой подход помогает убрать бессмысленные URL вроде ?s=, но не подходит, если у вас есть внутренние ссылки на страницу поиска без запроса. Перед включением проверьте шаблоны, меню и виджеты.

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

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

  • Откройте страницу поиска с запросом и проверьте исходный код: должен быть noindex,follow.
  • Проверьте HTTP-статус через DevTools или curl -I.
  • Убедитесь, что title на поисковой странице не совпадает с обычной записью или архивом.
  • В Search Console отправьте URL на повторную проверку, если он уже был в индексе.

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

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

В ответе вы должны увидеть либо 200 OK с мета-тегом noindex, либо другой ожидаемый статус, если вы выбрали жёсткий сценарий. Если статус и поведение не совпадают с планом, значит правило не сработало или его перехватывает тема/плагин.

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

Закрыли только robots.txt и ждёте удаления из индекса

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

Поставили noindex, но SEO-плагин перезаписал разметку

У популярных SEO-плагинов есть собственные шаблоны мета-тегов. Если они включены, ваш код в wp_head может оказаться не единственным источником разметки. Проверьте исходный HTML и настройки плагина, чтобы не было конфликтов.

Закрыли поиск целиком, хотя он нужен пользователям

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

Отдали 410 на все поисковые URL

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

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

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

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

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

Главный критерий простой: после внедрения поисковые URL не должны засорять индекс, а сам поиск должен оставаться рабочим для посетителей. Если это выполняется, решение сделано правильно.

×

Время действовать!

Суперцены на
WordPress!

-20%
на премиум темы

Не упусти шанс ⋙