На живом сайте чаще всего проблема не в «дублях вообще», а в конкретных страницах, которые создаются фильтрами, параметрами URL, архивами тегов, дат, авторов и внутренним поиском. Они могут попадать в индекс, размывать релевантность и тратить краулинговый бюджет. При этом закрывать всё подряд нельзя: часть страниц действительно приносит трафик.
Ниже — рабочая схема: как диагностировать такие URL, чем их закрывать, где ставить noindex, когда лучше использовать canonical, и как проверить, что поисковик понял изменения.
Какие страницы обычно нужно закрывать
Сначала полезно отделить полезные страницы от технического мусора. На WordPress чаще всего индексируются не те URL, которые вы бы оставили в выдаче:
- страницы с параметрами сортировки и фильтрации:
?orderby=,?filter=,?s=; - архивы тегов, если они пустые или почти пустые;
- архивы авторов на сайтах с одним автором;
- архивы дат, если они не несут самостоятельной ценности;
- страницы пагинации в разделах, где контент дублируется и не нужен в поиске;
- служебные страницы поиска по сайту.
Если страница нужна пользователю, но не должна ранжироваться сама по себе, обычно достаточно noindex,follow. Если URL полностью технический и не должен участвовать в обходе, можно дополнительно ограничить его появление в карте сайта и внутренней перелинковке.
Диагностика: как понять, что именно попало в индекс
Не начинайте с правки кода. Сначала соберите список конкретных URL, которые уже индексируются или активно обходятся роботами. Для этого достаточно трех источников:
- отчет «Страницы» в Google Search Console;
- логика URL в поиске по сайту:
site:example.com inurl:?,site:example.com tag,site:example.com author; - серверные логи или хотя бы статистика обхода, если у вас есть доступ.
Если вы видите, что в индекс попали страницы с параметрами, проверьте, не генерирует ли тема или плагин отдельные ссылки на фильтры в меню, хлебных крошках или блоках «похожие записи». Часто проблема не в самом параметре, а в том, что на него ведут внутренние ссылки.
Что проверить перед изменениями
- есть ли у страницы реальный поисковый спрос;
- не является ли она единственной точкой входа в важный раздел;
- не закрыта ли она уже через
robots.txt— это не всегда заменяетnoindex; - не стоит ли на ней каноникал на другую страницу;
- не попадает ли она в XML-карту сайта.
Пошаговое решение: закрываем служебные URL правильно
Для большинства задач на WordPress удобнее всего использовать SEO-плагин, который умеет управлять мета-тегами и картой сайта. Если у вас уже стоит Yoast SEO, Rank Math или аналогичный плагин, настройка обычно делается без кода. Но важно понимать логику: noindex должен быть на самой странице, а не только в robots.txt.
| Подход | Когда использовать | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Архивы, теги, авторы, поиск | Быстро, без правки темы | Меньше гибкости для сложных условий |
| Код в теме/плагине | Нестандартные фильтры и параметры | Точный контроль | Нужна аккуратность и тестирование |
robots.txt только | Редкие служебные пути | Просто | Не гарантирует удаление из индекса |
Вариант через код: добавить noindex для страниц поиска и архивов
Если плагин не покрывает ваш сценарий, можно добавить мета-роботс через фильтр wp_robots. Это штатный механизм WordPress, он не требует выдуманных хуков и работает на уровне вывода <meta name="robots">.
<?php
add_filter( 'wp_robots', function( array $robots ) {
if ( is_search() || is_author() || is_date() ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
if ( is_tag() ) {
$tag = get_queried_object();
if ( $tag && ! empty( $tag->count ) && (int) $tag->count < 3 ) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
}
return $robots;
} );Этот пример закрывает поиск, архивы авторов и дат, а также малосодержательные теги. Логику для тегов лучше адаптировать под свой сайт: число записей в теге — это лишь один из критериев, а не универсальное правило.
Вариант для URL с параметрами
Если у вас есть фильтры, которые создают URL вида ?color=red или ?orderby=price, можно закрывать их точечно по наличию параметров в запросе:
<?php
add_filter( 'wp_robots', function( array $robots ) {
$params = array( 'orderby', 'filter', 'color', 'size' );
foreach ( $params as $param ) {
if ( isset( $_GET[ $param ] ) ) {
$robots['noindex'] = true;
$robots['follow'] = true;
break;
}
}
return $robots;
} );Здесь важно не переборщить: если параметр влияет на полезную посадочную страницу, закрывать его не стоит. Например, сортировка по цене на каталоге может быть полезной для пользователей, но не нужна в индексе.
Когда лучше использовать canonical, а когда noindex
canonical и noindex решают разные задачи. Если у вас несколько URL с почти одинаковым контентом, но один из них должен считаться основным, ставьте каноникал на основную страницу. Если URL сам по себе не нужен в поиске, добавляйте noindex.
Практически это выглядит так:
- фильтрованные страницы каталога — чаще
noindex,follow; - дубли из-за параметров сортировки — часто каноникал на базовую страницу раздела;
- архивы тегов без ценности —
noindex,follow; - страницы поиска —
noindex,followпочти всегда.
Если поставить только canonical на страницу с фильтром, поисковик может всё равно продолжать её обходить и иногда индексировать как альтернативную версию. Если задача именно убрать URL из выдачи, одного каноникала может быть недостаточно.
Проверка результата после внедрения
После изменений не ждите мгновенного эффекта. Сначала проверьте сам HTML страницы, потом карту сайта, потом отчеты поисковика.
- Откройте проблемный URL в браузере и посмотрите исходный код: должен быть
<meta name="robots" content="noindex,follow">или эквивалентный набор директив. - Проверьте, не осталась ли страница в XML sitemap.
- В Google Search Console используйте проверку URL и запрос на переобход.
- Через несколько дней сравните статус страницы в отчете «Индексирование».
Если страница всё ещё индексируется, обычно причина одна из трех: директива не выводится на нужном шаблоне, URL всё ещё активно связан внутренними ссылками, либо поисковик ещё не переобошёл страницу.
Мини-чек-лист перед публикацией изменений
- на нужных шаблонах выводится
noindex; - страница не попадает в sitemap;
- внутренние ссылки на неё убраны или сокращены;
- каноникал указывает на основную версию, если это уместно;
- в Search Console нет массовых ошибок обхода.
Частые ошибки и как их исправить
Закрыли URL в robots.txt и думают, что этого достаточно
Это самая частая ошибка. Если робот не может зайти на страницу, он не увидит noindex. В результате URL может продолжать висеть в индексе как «известный, но не просканированный». Для удаления из выдачи лучше использовать мета-robots или заголовок X-Robots-Tag, а robots.txt — только как дополнительную меру.
Поставили noindex на все архивы подряд
Так можно случайно убрать из поиска полезные разделы. Например, теги или категории иногда дают хороший трафик. Перед массовым закрытием проверьте, какие архивы уже ранжируются и приводят переходы.
Не убрали внутренние ссылки
Если на фильтрованные страницы продолжают вести меню, блоки и хлебные крошки, робот будет возвращаться к ним снова и снова. Закрытие от индексации без чистки ссылочной структуры работает хуже и дольше.
Оставили страницу в sitemap
Это не всегда критично, но создает противоречивые сигналы. Если URL закрыт от индексации, он не должен одновременно активно предлагаться в карте сайта.
Безопасность и производительность: что не сломать по пути
Когда вы добавляете проверку параметров через $_GET, не используйте эти значения для SQL-запросов или прямого вывода без валидации. В примере выше они нужны только для проверки наличия параметра. Если дальше строится логика фильтрации, значения нужно отдельно санитизировать.
Ещё один практический момент: не вешайте тяжелую логику на каждый запрос фронтенда. Для простого добавления noindex достаточно легкой проверки шаблона или параметра. Если у вас сложные правила по множеству URL, лучше вынести их в отдельный плагин или mu-plugin, чтобы не потерять изменения при обновлении темы.
Если нужен более широкий аудит дублей, архивов и служебных страниц, имеет смысл сначала привести в порядок SEO-настройки, а уже потом править шаблоны. В таких задачах полезны инструменты вроде Clearfy Pro, если вам нужен набор типовых настроек для чистки сайта и управления индексированием, но даже с плагином всё равно стоит понимать, что именно он меняет.
Главный критерий успеха здесь простой: в индексе остаются только те URL, которые реально отвечают на поисковый запрос, а не все страницы, которые WordPress способен сгенерировать.