Как найти и отключить дубликаты страниц в WordPress через canonical и редиректы

Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких причин: страницы архивов, параметры в URL, пагинация, версии с /amp/, теги, категории, вложения медиа, а иногда и одинаковый контент в нескольких типах записей. Если это не разрулить, поисковик начинает выбирать не ту страницу для индексации, а часть веса расползается по копиям.

Ниже — рабочий сценарий: как найти источник дублей, что закрывать редиректом, где достаточно canonical, а где лучше вообще убрать страницу из индекса. Без абстракций, только то, что реально можно проверить после внедрения.

Как понять, что у вас именно проблема с дублями

Первый признак — в индексе находятся страницы, которые вы не считали основными: URL с параметрами, архивы автора, вложения изображений, страницы пагинации, версии с www и без www, http и https, а также копии записей в разных разделах. Второй признак — в Search Console одна и та же страница может быть отмечена как другая каноническая, а в выдаче показывается не тот URL, который вы хотели видеть основным.

Проверять нужно не только глазами. Сначала соберите список подозрительных URL:

  • страницы с параметрами вроде ?replytocom=, ?utm_, ?sort=;
  • архивы тегов и авторов, если они не несут самостоятельной ценности;
  • страницы вложений медиа;
  • дубли главной по разным адресам;
  • страницы пагинации, если они индексируются без необходимости;
  • копии контента в категориях и кастомных таксономиях.

Что смотреть в Search Console и в исходном коде

Откройте проблемную страницу и посмотрите, какой canonical указан в <head>. Если там стоит не тот URL, который вы считаете основным, это уже повод проверить тему, SEO-плагин или кастомный код. Затем сравните фактический адрес страницы с тем, который должен быть каноническим. Если контент одинаковый, а URL разные, поисковик почти всегда будет пытаться выбрать один из них сам.

Для быстрой диагностики полезно проверить заголовки и редиректы:

curl -I https://example.com/page/

Если видите несколько прыжков редиректа, цепочку стоит сократить. Если вместо 301 используется 302, это тоже ошибка для постоянных дублей.

Какие дубли нужно лечить редиректом, а какие — canonical

Здесь важно не смешивать задачи. 301-редирект нужен, когда у страницы есть один правильный адрес, а остальные варианты должны исчезнуть из обращения. canonical подходит, когда страницы технически доступны, но вы хотите явно указать поисковику основную версию. noindex уместен для архивов и служебных страниц, которые не должны попадать в индекс вообще.

СценарийЧто делатьКомпромисс
www / без www, http / https301-редирект на один вариантНельзя оставлять оба адреса доступными
Параметры сортировки, UTM, replytocomCanonical на чистый URL или редирект, если параметр не нуженНе всегда можно редиректить, если параметр нужен для логики
Архивы тегов, авторов, датnoindex или отключение индексацииПотеря части внутренней перелинковки, если архивы были важны
Вложения изображенийРедирект на файл или на родительскую записьНужно проверить, как тема и медиа-плагин строят ссылки

Пошаговое решение: как убрать дубли в WordPress

Шаг 1. Приведите сайт к одному базовому адресу

Сначала убедитесь, что в Настройки → Общие указан один и тот же домен для WordPress Address и Site Address. Если сайт должен работать только по HTTPS и без www, это должно быть отражено и в настройках, и на уровне сервера.

Для Apache можно использовать такой редирект в .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]

Для Nginx логика аналогичная, но правило пишется в конфиге сервера. Если у вас уже есть CDN или прокси, проверьте, не конфликтует ли редирект с их настройками.

Шаг 2. Уберите лишние архивы из индекса

Если архивы тегов, авторов или дат вам не нужны как посадочные страницы, не оставляйте их индексируемыми по инерции. В большинстве проектов достаточно закрыть их от индексации через SEO-плагин или через код, если вы контролируете шаблон.

Пример для темы или мини-плагина: отключить индексацию архивов авторов и дат, если они не несут пользы.

add_filter('wp_robots', function ($robots) {
    if (is_author() || is_date()) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }
    return $robots;
});

Это не заменяет полноценную SEO-настройку, но помогает, если вам нужно быстро убрать служебные архивы из индекса без вмешательства в шаблон.

Шаг 3. Настройте canonical для страниц с параметрами

Если у вас есть страницы с параметрами сортировки, фильтрации или трекинга, canonical должен указывать на чистую версию URL. Для большинства обычных записей WordPress это делает SEO-плагин, но при кастомной логике лучше проверить вручную.

Если нужно принудительно задать canonical для конкретного шаблона, можно использовать фильтр wpseo_canonical в Yoast SEO или аналогичный механизм в другом SEO-плагине. Но если вы не уверены в конкретном плагине, безопаснее решать задачу на уровне редиректа или шаблона, а не вешать несколько конфликтующих фильтров сразу.

Шаг 4. Закройте вложения медиа и служебные страницы

Страницы вложений часто становятся мусорными дублями: у них почти нет уникального контента, но они индексируются отдельно. Практичнее редиректить такие страницы на родительскую запись или на сам файл, если это действительно нужно.

Пример для редиректа attachment-страниц на родительскую запись:

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;
        }
    }
});

Если родителя нет, можно отправлять на главную или на страницу медиа-архива, но это уже зависит от структуры сайта. Главное — не оставлять пустые attachment-страницы как отдельные индексируемые документы.

Быстрая проверка после внедрения

После настройки не ограничивайтесь открытием страницы в браузере. Проверьте три вещи: код ответа, canonical и то, как URL видит поисковик.

  • Откройте старый URL и убедитесь, что он отдаёт 301, а не 200 или 302.
  • Посмотрите исходный код страницы и найдите rel="canonical".
  • Проверьте в Search Console раздел с индексированием и каноническими URL.
  • Сравните количество дублей до и после изменений, если у вас есть экспорт из краулера.

Полезно прогнать сайт через краулер вроде Screaming Frog или аналог и отфильтровать:

  • страницы с одинаковым title;
  • страницы с одинаковым canonical;
  • URL с параметрами;
  • редирект-цепочки длиннее одного шага.

Если canonical указывает на правильный URL, а в индексе всё равно висит дубль, это не всегда ошибка. Поисковику нужно время, чтобы переобойти сайт и переоценить сигналы.

Частые ошибки и как их исправить

Canonical ведёт на несуществующую страницу

Так бывает после смены структуры ссылок или удаления записи. В результате поисковик получает противоречивый сигнал: страница доступна, но canonical указывает в никуда. Исправление простое — canonical должен вести на живой, индексируемый и конечный URL.

Редирект сделан через 302 вместо 301

Если дубль должен исчезнуть навсегда, временный редирект здесь не подходит. 302 может задержать переиндексацию и оставить копии в выдаче дольше, чем нужно.

Закрыли от индексации всё подряд

Иногда после борьбы с дублями под noindex попадают и полезные страницы: категории, которые реально приводят трафик, или архивы, которые участвуют во внутренней перелинковке. Перед массовым отключением проверьте, какие разделы дают переходы и нужны ли они пользователю.

Параметры URL продолжают плодить копии

Если у вас есть фильтры, сортировка или UTM-метки, canonical сам по себе не всегда решает проблему. Иногда лучше убрать индексирование параметров на уровне генерации ссылок, а иногда — настроить серверный редирект для явно мусорных вариантов.

Что делать, если дубли создаёт тема или плагин

Частая история: плагин выводит отдельные страницы для медиа, автора, таксономии или кастомного поиска, а тема дополнительно дублирует контент в блоках и архивах. В таком случае не стоит править всё в лоб через базу данных. Сначала отключите источник дубля в настройках плагина, потом проверьте шаблоны темы.

Если нужен инструмент для чистки SEO-ошибок и дублей на уровне типовых настроек, можно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином всё равно нужно проверять, какие именно URL он закрывает и не ломает ли полезные архивы.

Практические советы по безопасности и производительности

Чем меньше дублей и лишних архивов, тем меньше страниц нужно обходить поисковым роботам и тем чище становится карта сайта. Это не магическая оптимизация, но на больших сайтах она заметна: меньше мусорных URL, меньше лишних запросов к шаблонам, меньше шансов, что поисковик выберет не ту версию страницы.

  • Не ставьте одновременно несколько SEO-плагинов с разной логикой canonical.
  • Не закрывайте важные страницы через robots.txt, если они уже в индексе — это не убирает их оттуда мгновенно.
  • После массовых редиректов проверьте логи сервера на цепочки и 404.
  • Если меняете структуру постоянных ссылок, делайте карту редиректов заранее, а не по факту падения трафика.

Если задача выходит за рамки ручной настройки и на сайте много технического мусора, лучше сначала зафиксировать правила: какие URL индексируются, какие редиректятся, а какие должны быть доступны только для пользователей. Без этого дубли будут возвращаться после каждого обновления темы или плагина.

Как отключить pingbacks и trackbacks в WordPress без поломки внутренних ссылок
06.09.2026
Как отключить XML-RPC в WordPress и защитить сайт от брутфорса
24.08.2026
Как автоматически отправлять email при изменении статуса заказа в WooCommerce
13.09.2026
Как создать собственный тип записи (Custom Post Type) в WordPress с примером кода
02.10.2026
Автоматическое удаление неактивных пользователей WordPress: практическое руководство
13.09.2026
×
Прокачай свой сайт WordPress!

WordPress

-20% на премиум темы и плагины

Создай сайт своей мечты ⋙