Если в поиске начинают всплывать страницы внутреннего поиска, архивы по датам, авторские архивы и пустые таксономии, проблема обычно не в «плохом SEO», а в том, что сайт отдаёт поисковикам слишком много технических URL. Закрывать всё подряд через noindex — не лучшая идея: часть страниц лучше убрать из обхода, часть оставить доступной, но не индексируемой, а часть вообще не генерировать в выдаче сайта.
Ниже — рабочий сценарий для WordPress: что именно закрывать, как это сделать на уровне robots.txt, meta robots и шаблонов, и как проверить, что поисковик действительно перестал тратить краулинговый бюджет на мусорные страницы.
Что обычно попадает в индекс лишним
Чаще всего проблемы создают не посты и страницы, а служебные и полуслужебные URL:
- страницы внутреннего поиска вида
/?s=...; - архивы по датам, если они не несут самостоятельной ценности;
- архивы авторов на сайтах с одним автором;
- пустые рубрики и теги;
- страницы пагинации архивов, если они дублируют основной контент;
- служебные страницы с параметрами фильтрации и сортировки.
Важно не смешивать индексацию и обход. Иногда нужно запретить именно обход, иногда — оставить обход, но убрать страницу из индекса. Для WordPress это разные инструменты.
Диагностика: что именно нужно закрывать
Сначала посмотрите, какие URL уже попали в индекс и как они выглядят в выдаче. Самый простой путь — поиск по оператору site: и проверка через Google Search Console. Если в индексе сидят страницы поиска или архивы с тонким контентом, это уже сигнал к точечной настройке.
Что проверить в первую очередь
- Есть ли в индексе URL с
?s=; - открываются ли архивы автора при одном авторе;
- не индексируются ли пустые теги и рубрики;
- не создаёт ли тема отдельные шаблоны для страниц поиска;
- не дублируются ли архивы через пагинацию и каноникал.
Если сайт использует SEO-плагин, сначала проверьте его настройки. Во многих случаях нужное уже есть, и код не требуется. Но если плагин не покрывает ваш сценарий, проще и надёжнее закрыть URL на уровне темы или небольшого mu-plugin.
Пошаговое решение
1. Запретите индексацию страниц поиска
Страницы поиска почти всегда не должны попадать в индекс. Они меняются от запроса к запросу, быстро устаревают и создают много мусора. В WordPress можно добавить noindex,follow для поисковых результатов через фильтр wp_robots.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Этот вариант лучше, чем пытаться закрыть поиск через robots.txt. Если запретить обход, поисковик может не увидеть мета-тег и продолжит держать старые URL в индексе дольше, чем нужно.
2. Уберите из индекса архивы, которые не несут пользы
Если на сайте один автор, авторский архив обычно не нужен. То же касается архивов по датам на новостных или корпоративных сайтах, где они не помогают навигации. Здесь можно использовать тот же подход через wp_robots.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_author() || is_date() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
} );Если архивы нужны пользователям, но не нужны в поиске, это нормальный компромисс. Страницы остаются доступными по сайту, но не конкурируют с основными материалами.
3. Закройте пустые рубрики и теги на уровне шаблона
Пустые архивы часто появляются после импорта контента, миграций или массовой чистки. Если такие страницы отдаются как обычные архивы, поисковик может тратить на них обход. В шаблоне архива можно добавить условие и отдать 404 или 410, если термин пустой и не должен существовать публично.
<?php
$term = get_queried_object();
if ( $term instanceof WP_Term && 0 === (int) $term->count ) {
global $wp_query;
$wp_query->set_404();
status_header( 404 );
nocache_headers();
include get_query_template( '404' );
exit;
}Этот вариант уместен только если пустой архив действительно не должен существовать. Если термин нужен для будущего контента, лучше оставить его доступным, но закрыть от индексации.
4. Не полагайтесь только на robots.txt
robots.txt полезен для снижения лишнего обхода, но это не замена noindex. Если вы просто запретите /search/ или /?s=, поисковик может не увидеть, что страницу надо убрать из выдачи. Поэтому для уже проиндексированных URL сначала ставят noindex, а потом при необходимости ограничивают обход.
Пример аккуратного правила для служебных разделов:
User-agent: *
Disallow: /?s=
Disallow: /search/
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.phpНо если у вас поиск работает только через параметр ?s=, не рассчитывайте, что одно это правило решит проблему индексации. Оно лишь уменьшит количество бесполезных запросов к сайту.
Сравнение подходов
| Подход | Когда применять | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы и поиск без кода | Просто включить, меньше риска сломать шаблон | Не всегда покрывает нестандартные условия |
Код через wp_robots | Нужна точечная логика для поиска, архивов, таксономий | Контроль на уровне WordPress, без лишних зависимостей | Требует аккуратного тестирования |
robots.txt | Нужно снизить обход служебных URL | Быстро и просто | Не убирает уже проиндексированные страницы |
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой страницы. Нужны именно технические признаки:
- в исходном коде страницы поиска и архивов есть
meta name="robots"сnoindex; - в Google Search Console URL получает статус, совместимый с исключением из индекса;
- новые страницы поиска не появляются в выдаче по
site:; - количество обходов служебных URL в логах или отчётах краулинга снижается;
- основные статьи не теряют внутренние ссылки из-за слишком жёсткого закрытия архивов.
Проверить мета-тег можно прямо в браузере или через curl:
curl -I "https://example.com/?s=test"Если вы используете SEO-плагин, убедитесь, что он не перезаписывает ваши правила. Иногда тема или плагин добавляют свои robots-метки позже вашего кода, и в итоге на странице оказывается не тот набор директив, который вы ожидали.
Частые ошибки и как их исправить
Закрыли всё через robots.txt и ждёте удаления из индекса
Это самая частая ошибка. Disallow не равен noindex. Если URL уже в индексе, поисковику нужен сигнал именно на уровне страницы или через удаление контента/редирект.
Ставят noindex на все архивы подряд
Так можно случайно убрать из поиска полезные рубрики и теги, которые реально приводят трафик. Сначала разделите архивы на полезные и технические, потом закрывайте только лишнее.
Ломают пагинацию
Если вы закрываете архивы, проверьте, что не исчезли ссылки на посты, которые доступны только через пагинацию. Иногда лучше закрыть от индексации сам архив, но оставить его доступным для обхода.
Используют 404 там, где нужен 410
Если страница удалена окончательно, 410 Gone обычно честнее, чем 404. Но применять его стоит только когда URL действительно больше не должен существовать. Иначе вы ускорите выпадение полезной страницы из индекса.
Практические советы по безопасности и производительности
Если на сайте много служебных URL, не ограничивайтесь SEO-настройками. Проверьте, не создают ли их:
- поиск по сайту с параметрами в URL;
- фильтры темы или плагинов;
- виджеты с архивами и облаками тегов;
- автоматические страницы таксономий после импорта;
- старые правила редиректов после миграции.
Для больших сайтов полезно периодически чистить неиспользуемые таксономии и проверять, не появились ли новые архивы после установки плагинов. Если нужен более широкий набор инструментов для удаления дублей, служебных элементов и технической чистки, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpcache.ru&utm_medium=article&utm_campaign=zakryt-ot-indeksacii-stranicy-poiska-i-arkhivy-bez-noindex-v-wordpress
Главная идея простая: не пытайтесь «прятать» всё подряд. Сначала определите, какие URL реально вредят индексации, потом выберите для каждого свой способ — noindex, robots.txt, 404/410 или удаление шаблона. Тогда сайт станет чище без побочных эффектов для нормальных страниц.