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