Дубли в 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 / https | 301-редирект на один вариант | Нельзя оставлять оба адреса доступными |
| Параметры сортировки, UTM, replytocom | Canonical на чистый 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 индексируются, какие редиректятся, а какие должны быть доступны только для пользователей. Без этого дубли будут возвращаться после каждого обновления темы или плагина.