В WordPress дубли чаще всего появляются не из-за «плохого SEO», а из-за штатной логики: архивы рубрик, меток, авторов, страниц пагинации, версий с параметрами в URL и служебных страниц. Если это не контролировать, поисковик тратит краулинговый бюджет на одно и то же содержимое, а в индексе начинают жить страницы, которые вы не планировали продвигать.
Ниже — рабочая схема: сначала находим источник дублей, потом выбираем способ закрытия, а затем проверяем, что ничего важного не выпало из индекса и не сломало внутреннюю перелинковку.
Где в WordPress обычно рождаются дубли
Самая частая ошибка — пытаться закрыть всё подряд одним правилом. Это почти всегда приводит к тому, что вместе с мусором исчезают полезные страницы. Сначала нужно понять, какой именно тип дубля у вас есть.
Типовые источники дублей
- архивы рубрик и меток, если они дублируют контент записей;
- страницы автора на небольшом сайте, где один автор и мало уникального контента;
- страницы пагинации архивов, если они не несут самостоятельной ценности;
- URL с параметрами сортировки, фильтрации, UTM и служебными параметрами;
- версии страниц с
/amp/,?replytocom=,?fbclid=и похожими хвостами; - страницы поиска по сайту, если они индексируются;
- медиа-страницы вложений, которые дублируют сами файлы или записи.
Если на сайте есть плагин SEO, часть настроек уже может быть доступна в интерфейсе. Но даже в этом случае полезно понимать, что именно он делает: ставит noindex, меняет canonical, закрывает URL в robots.txt или просто убирает ссылку из карты сайта. Это разные механики, и у них разный эффект.
Диагностика: как понять, что именно индексируется лишнего
Начинать лучше не с правок, а с проверки факта. Иначе легко закрыть то, что поисковик вообще не видел, и пропустить реальную проблему.
Что проверить в первую очередь
- В Google Search Console откройте отчёт по страницам и посмотрите, какие типы URL попадают в индекс: теги, архивы, параметры, вложения.
- Сравните
site:domain.ruс реальной структурой сайта. Это не точный инструмент, но он быстро показывает мусорные шаблоны URL. - Проверьте исходный код проблемной страницы: есть ли
meta robots, какой canonical указан, не дублируется ли контент на похожем URL. - Посмотрите серверные логи или хотя бы отчёты краулера, если он у вас есть: часто бот ходит по параметрам, которые создаёт тема или фильтр.
Если вы используете плагин для SEO-аналитики или технической чистки, удобно сначала собрать список URL, а уже потом менять настройки. Например, в Clearfy Pro есть инструменты для отключения лишних архивов, дублей и служебных страниц, но применять их стоит только после проверки конкретного сценария на вашем сайте.
Пошаговое решение: что закрывать и чем
Универсального переключателя нет. Для каждого типа дубля лучше выбрать свой способ: где-то достаточно noindex, где-то нужен 301, а где-то — canonical и чистка внутренних ссылок.
1. Закройте служебные архивы, если они не нужны в поиске
Если рубрики, метки или архивы автора не дают самостоятельной ценности, их обычно переводят в noindex, follow. Это оставляет ссылки для обхода, но убирает страницу из индекса. Для небольших сайтов метки часто вообще не нужны в поиске, особенно если они создаются автоматически и ведут на почти пустые страницы.
Если вы правите это кодом темы или плагина, можно добавить мета-тег через wp_head для конкретных архивов:
add_action('wp_head', function () {
if (is_tag() || is_author() || is_search()) {
echo '<meta name="robots" content="noindex,follow">' . "\n";
}
});Это рабочий пример, но в реальном проекте лучше не размазывать SEO-логику по теме. Если есть SEO-плагин, настройку безопаснее держать там, а код использовать только для нестандартных случаев.
2. Уберите дубли от параметров URL
Параметры сортировки, фильтрации и трекинга часто создают десятки URL с одинаковым контентом. В этом случае canonical должен указывать на чистую версию страницы, а сами параметризованные URL — не попадать в карту сайта и не индексироваться.
Если параметр не нужен для SEO, можно принудительно нормализовать canonical:
add_filter('get_canonical_url', function ($canonical, $post) {
if (is_singular() && !empty($_GET)) {
$canonical = get_permalink($post);
}
return $canonical;
}, 10, 2);Этот подход не решает всё сам по себе, но помогает, когда сторонний плагин или тема добавляют параметры в URL, а canonical остаётся «грязным».
3. Для вложений и медиа-страниц используйте редирект
Страницы вложений почти всегда бесполезны как отдельные посадочные. Если у вас нет осознанной стратегии под медиа-архив, лучше перенаправлять вложение на сам файл или на родительскую запись. Для этого часто используют SEO-плагин или небольшой код в template_redirect.
add_action('template_redirect', function () {
if (is_attachment()) {
$parent = wp_get_post_parent_id(get_the_ID());
if ($parent) {
wp_redirect(get_permalink($parent), 301);
exit;
}
}
});Если у вложения нет родителя, решение нужно выбирать отдельно: иногда разумнее отправить на главную медиафайла, иногда — на архив, а иногда просто закрыть страницу от индексации.
4. Проверьте карту сайта и robots.txt
Закрыть страницу от индексации недостаточно, если она продолжает попадать в sitemap. Поисковик всё равно будет регулярно её обходить. Поэтому после настройки нужно проверить, что:
- в sitemap нет архивов, которые вы закрыли;
- robots.txt не блокирует то, что должно быть доступно для обхода при
noindex; - canonical указывает на основную версию URL;
- внутренние ссылки не ведут массово на закрытые страницы.
Важно: если вы закрываете страницу через noindex, не блокируйте её в robots.txt до того, как поисковик увидит мета-тег. Иначе бот может не прочитать директиву на самой странице.
Сравнение подходов: noindex, canonical, 301
Выбор зависит от того, что вы хотите сделать с URL: оставить его доступным, но не индексировать, объединить сигнал на основной адрес или полностью заменить старый адрес новым.
| Подход | Когда использовать | Плюс | Минус |
|---|---|---|---|
noindex, follow | архивы, теги, поиск по сайту, служебные страницы | страница остаётся доступной для обхода | не убирает дубли из обхода сразу |
| canonical | параметры URL, похожие версии одной страницы | сигнализирует основную версию | не всегда игнорируется, если страница сильно отличается |
| 301 redirect | устаревшие URL, вложения, переезды | жёстко переносит трафик и сигнал | не подходит, если URL должен жить отдельно |
Проверка результата после внедрения
После изменений не ограничивайтесь «страница открывается». Нужно проверить именно SEO-логику.
Чек-лист проверки
- в HTML проблемной страницы есть нужная директива
noindexили корректный canonical; - в sitemap отсутствуют закрытые URL;
- страница не возвращает 404 и не уходит в бесконечный редирект;
- внутренние ссылки ведут на чистые URL без параметров;
- в Search Console новые настройки не вызвали всплеск ошибок сканирования;
- через несколько обходов бот перестал массово индексировать дубль-страницы.
Для быстрой технической проверки откройте исходный код и найдите:
<meta name="robots" content="noindex,follow">
<link rel="canonical" href="https://example.com/">Если canonical указывает на другой адрес, чем вы ожидали, значит где-то вмешивается тема, SEO-плагин или фильтр. Это нужно разбирать отдельно, а не надеяться, что поисковик «сам поймёт».
Частые ошибки и как их исправить
Закрыли в robots.txt, но не поставили noindex
Так делают часто, когда хотят «быстро убрать из индекса». Проблема в том, что поисковик может не увидеть директиву на самой странице и продолжит держать URL в базе как известный, но недоступный. Если цель — убрать страницу из индекса, сначала используйте noindex, а блокировку в robots.txt применяйте только там, где это действительно нужно.
Закрыли рубрики, но оставили их в меню и внутренних ссылках
В результате страница всё ещё активно обходится, а пользователь попадает на раздел, который вы сами считаете мусорным. Если архив не нужен, уберите его из навигации или замените на более полезную посадочную.
Поставили 301 на всё подряд
Редирект — не универсальная замена индексации. Если перенаправить на главную все теги, архивы и параметры, вы потеряете смысловую структуру сайта и создадите цепочки редиректов. 301 нужен только там, где есть очевидный новый адрес.
Не учли пагинацию
Иногда закрывают только первую страницу архива, а /page/2/ и дальше остаются индексируемыми. Проверяйте весь шаблон URL, а не один пример.
Практика безопасности и производительности
Чем меньше лишних страниц участвует в обходе, тем меньше нагрузка на сервер и тем проще поисковику понять структуру сайта. Но не стоит превращать техническую чистку в набор жёстких запретов.
- не отключайте архивы, если они реально дают трафик и помогают навигации;
- не прячьте важные страницы в robots.txt без понимания, как это повлияет на обход;
- не смешивайте SEO-логику темы и плагинов без необходимости;
- после правок проверьте кеш: иногда старый HTML ещё отдаёт прежний canonical или robots;
- если используете кеширующий плагин, очистите кеш после изменения мета-тегов и редиректов.
Если нужен более системный подход к чистке дублей и служебных страниц, имеет смысл смотреть в сторону инструментов, которые управляют этим централизованно, а не через разрозненные сниппеты в теме. Но даже в этом случае сначала стоит проверить, какие URL реально создают проблему, а уже потом включать автоматические отключения.
Хорошая проверка — это не только отсутствие дублей в индексе, но и предсказуемое поведение сайта: у каждой важной страницы один основной URL, у служебных разделов понятный статус, а в Search Console нет сюрпризов после очередного обхода.