На WordPress дубли часто появляются не только из-за одинаковых материалов, но и из-за архивов, пагинации, тегов, авторских страниц, страниц вложений и технических URL. Проблема обычно всплывает после аудита в Search Console или краулинга: в индексе оказываются несколько версий одной и той же сущности, а поисковик сам выбирает каноническую, не всегда ту, что вам нужна.
Ниже разберём, как быстро понять источник дублей, что можно закрыть от индексации, а что лучше удалить с редиректом, и как проверить, что после правок сайт не потерял важные страницы.
Когда дубли в WordPress действительно вредят
Не каждый повтор URL — это проблема. Например, пагинация архива или страницы фильтрации могут быть допустимы, если они нужны пользователю и не создают мусор в индексе. Опасный сценарий другой: одна запись доступна по нескольким адресам, а также индексируются служебные страницы, которые не несут самостоятельной ценности.
Типичные источники дублей
- одна и та же запись открывается через несколько таксономий или хлебные крошки;
- страницы вложений медиафайлов индексируются отдельно от самой записи;
- архивы тегов и категорий дублируют друг друга по смыслу;
- авторские архивы не нужны, но доступны для индексации;
- страницы с параметрами сортировки, поиска и UTM попадают в индекс;
- HTTP/HTTPS и www/non-www настроены непоследовательно;
- сайт отдаёт одинаковый контент на URL со слешем и без него.
Диагностика: где искать дубли сначала
Начните не с правок, а с проверки, какие именно URL уже попали в индекс и как поисковик их видит. Это экономит время: иногда проблема не в контенте, а в шаблонах темы или в плагине, который создаёт лишние архивы.
Что проверить в первую очередь
- отчёт «Страницы» в Google Search Console;
- результаты краулинга Screaming Frog, Netpeak Spider или аналогом;
- наличие одинаковых title и H1 на разных URL;
- канонический URL в исходном коде;
- ответ сервера для дублей: 200, 301, 404 или 410;
- robots.txt и meta robots для архивов и служебных страниц.
Если у вас есть доступ к базе, полезно посмотреть, сколько записей и архивов реально создаёт тема и плагины. Часто дубли появляются не из-за контента, а из-за лишних таксономий или шаблонов, которые никто не использует.
Как удалить дубли безопасно: рабочая схема
Логика простая: всё, что является полноценной альтернативной страницей и имеет входящий трафик или ссылки, лучше склеивать 301-редиректом. Всё, что не нужно в индексе, но должно оставаться доступным для пользователей, можно закрыть от индексации через noindex или каноникал. Удалять без проверки стоит только откровенный мусор, который не имеет внешних ссылок и не нужен в навигации.
Шаг 1. Уберите технические дубли на уровне настроек
Сначала выровняйте базовые вещи: единый протокол, единый вариант домена, единый формат слеша. Это решает часть дублей без кода. Затем проверьте, не создаёт ли SEO-плагин отдельные архивы для тегов, авторов и дат, если они вам не нужны.
Шаг 2. Закройте от индексации служебные архивы
Если авторские или датированные архивы не несут ценности, их лучше не удалять физически, а закрыть от индексации. Это безопаснее для сайта и не ломает внутренние ссылки.
add_filter('wp_robots', function ($robots) {
if (is_author() || is_date() || is_search()) {
$robots['noindex'] = true;
$robots['nofollow'] = true;
}
return $robots;
});Этот вариант работает через стандартный фильтр wp_robots. Он не подменяет SEO-плагин, а дополняет его. Если у вас уже настроены robots meta в Yoast SEO, Rank Math или другом плагине, проверьте, не конфликтуют ли правила между собой.
Шаг 3. Склейте одинаковые URL через 301
Если у записи есть старый адрес, дубль со слешем или альтернативный путь после изменения структуры, нужен редирект. Для единичных случаев проще всего использовать template_redirect и wp_redirect().
add_action('template_redirect', function () {
if (!is_singular('post')) {
return;
}
$canonical = get_permalink();
$current = home_url(add_query_arg([], $GLOBALS['wp']->request));
if (trailingslashit($current) !== trailingslashit($canonical)) {
wp_redirect($canonical, 301);
exit;
}
});Этот пример не универсален для всех схем URL, но показывает принцип: сравнивайте фактический адрес с каноническим и отправляйте 301 только там, где это действительно дубль. Для массовых правил лучше использовать серверный редирект или плагин редиректов, а не городить сложную логику в теме.
Шаг 4. Уберите страницы вложений
Страницы вложений часто создают бесполезные URL, особенно если изображение открывается как отдельная запись. В большинстве проектов их лучше редиректить на родительскую запись или медиафайл, если он реально нужен.
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;
}
wp_redirect(home_url('/'), 301);
exit;
}
});Сравнение подходов: что выбрать в реальном проекте
| Подход | Когда подходит | Плюс | Минус |
|---|---|---|---|
| Плагин SEO | Нужно быстро закрыть архивы, настроить canonical и noindex | Меньше кода, проще сопровождать | Легко получить конфликт настроек |
| Код в теме или mu-plugin | Нужна точечная логика для конкретных типов страниц | Полный контроль | Требует тестирования после обновлений |
| Серверные редиректы | Нужно склеить массовые старые URL | Быстрее и надёжнее на большом объёме | Сложнее поддержка без доступа к серверу |
Если задача касается только дублей архивов и служебных страниц, обычно достаточно SEO-плагина и пары точечных правил. Если проблема связана со старой структурой URL после миграции, без редиректов на уровне сервера или плагина редиректов не обойтись.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужно убедиться, что поисковик видит правильный канонический адрес, а дубли не отдают код 200.
Чек-лист проверки
- откройте проблемный URL и проверьте, что он редиректит на нужную страницу;
- посмотрите исходный код и убедитесь, что
rel="canonical"указывает на основной адрес; - проверьте, что архивы, которые вы закрывали, получили
noindex; - убедитесь, что страницы вложений больше не индексируются отдельно;
- в Search Console отправьте на переобход основные URL и посмотрите, как меняется статус;
- сравните заголовки и H1 у дублей: они не должны оставаться одинаковыми без причины.
Если после внедрения часть страниц выпала из индекса, сначала проверьте, не закрыли ли вы лишнее. Ошибка в шаблоне robots meta часто затрагивает не только архивы, но и обычные записи, если условие написано слишком широко.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа
Если у страницы есть старые ссылки, трафик или внешние упоминания, noindex не решает проблему дубля. Поисковик может продолжать обходить URL, а вес ссылок не склеится так, как при 301.
Закрывают всё подряд через robots.txt
Это частая ошибка. Если запретить обход, поисковик может не увидеть canonical и не понять, что URL нужно склеить. Для дублей обычно лучше управлять индексацией через meta robots и редиректы, а не через грубую блокировку.
Делают редирект на главную страницу
Так часто поступают со страницами вложений и удалёнными материалами. Но если есть релевантный родительский URL, редирект на главную — плохой вариант: он теряет контекст и выглядит как soft 404.
Не проверяют пагинацию
Если закрыть архив целиком, можно случайно сломать навигацию по страницам категории. Пагинация сама по себе не всегда дубль. Сначала смотрите, есть ли у неё самостоятельная ценность и индексируется ли она вообще.
Безопасность и производительность
Если вы вносите код, не кладите его в активную тему без контроля версий. Для точечных правил лучше использовать mu-plugin или мини-плагин, чтобы изменения не пропали после обновления темы. Перед правками сделайте резервную копию базы и файлов, особенно если собираетесь массово менять URL.
На нагруженных сайтах не стоит проверять и редиректить каждый запрос через тяжёлые SQL-запросы. Чем проще условие в template_redirect, тем меньше риск просадки. Если дублей много, сначала решайте их настройками SEO-плагина и серверными правилами, а уже потом — точечным PHP-кодом.
Для чистки дублей и технического мусора в WordPress иногда удобнее использовать специализированные инструменты. Например, в Clearfy Pro есть функции для удаления дублей и чистки сайта; если нужен именно такой набор задач, это может сэкономить время на ручной настройке: Clearfy Pro.
Если у вас сложная структура контента, начните с аудита, а не с массового удаления. В WordPress дубль часто оказывается не дублем записи, а следствием шаблона, таксономии или неудачной настройки индексации. Когда источник найден, исправление обычно занимает меньше времени, чем попытка «почистить всё» вслепую.