Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелочей: одинаковый контент доступен по разным URL, архивы индексируются вместе с основными страницами, в выдачу попадают параметры сортировки, а каноникал либо отсутствует, либо указывает не туда. В итоге поисковик видит несколько версий одной и той же страницы и сам выбирает, какую оставить в индексе. Это почти всегда хуже, чем контролируемая схема с одной основной версией и понятными редиректами.
Ниже разберём, как быстро найти источник дублей, что исправлять в первую очередь и как проверить, что после правок сайт не потерял нужные страницы из индекса.
Как понять, что на сайте есть дубли
Проблема редко выглядит как очевидная ошибка в админке. Чаще она проявляется в поисковой консоли, в отчётах краулера или в странном поведении URL: одна и та же запись открывается с /page/2/, с параметром ?amp, с ?utm_, через HTTP и HTTPS, с www и без него, а иногда ещё и со слэшем и без слэша.
Что проверить в первую очередь
- одинаковые ли заголовок, H1 и основной текст у нескольких URL;
- есть ли у страниц
rel=canonicalи совпадает ли он с основной версией; - не индексируются ли служебные архивы: теги, авторы, даты, поиск по сайту;
- не создаёт ли плагин кэширования или фильтр параметров отдельные версии страниц;
- не открывается ли один и тот же контент по нескольким адресам после смены структуры ссылок.
Если у вас уже есть доступ к краулеру, начните с выгрузки URL с одинаковым title и похожим body. Если нет, можно быстро посмотреть вручную через поиск по сайту и через site:example.ru в поиске, но это только первичная диагностика, не полноценная проверка.
Пошаговое решение: от поиска дубля до редиректа
Логика простая: сначала определяем, какая версия страницы должна быть основной, затем закрываем альтернативные варианты от индексации или отправляем их на 301-редирект. Не стоит одновременно ставить noindex, canonical и редирект на один и тот же URL без понимания, что именно вы хотите получить. Для большинства дублей лучший вариант — 301 на основную страницу.
Шаг 1. Выберите канонический URL
Для каждой группы дублей должен быть один адрес, который вы считаете главным. Обычно это:
- URL без параметров;
- HTTPS-версия;
- один вариант со слэшем или без него, в зависимости от настроек сайта;
- основная запись, а не архив категории или тегов.
Если на сайте уже есть внешние ссылки на разные версии, не меняйте структуру хаотично. Сначала зафиксируйте основную версию, потом настройте редиректы.
Шаг 2. Закройте технические дубли редиректом
Для типичных случаев можно добавить правило в .htaccess или в конфигурацию Nginx. Ниже пример для Apache: он переводит HTTP на HTTPS и убирает www. Если у вас уже есть эти правила в другом месте, не дублируйте их.
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^ https://example.ru%{REQUEST_URI} [L,R=301]Если дубли создаются из-за старых URL после смены структуры постоянных ссылок, лучше делать точечные редиректы. Для этого удобно использовать плагин редиректов или правила сервера, а не пытаться ловить всё одной общей маской.
Шаг 3. Уберите лишние архивы из индекса
Архивы авторов, дат и тегов часто индексируются без пользы, особенно на небольших сайтах. Если они не дают трафик и не нужны как посадочные страницы, их лучше закрыть от индексации через SEO-плагин или вручную в robots/meta robots. Но не путайте закрытие архивов с удалением дублей: если архив уже ранжируется и приносит трафик, сначала оцените последствия.
Если вы используете SEO-плагин, проверьте, не создаёт ли он отдельные sitemap для архивов, которые вы потом закрываете. Это частая причина путаницы: страница исключена из индекса, но продолжает активно обходиться роботами.
Шаг 4. Проверьте canonical в шаблоне
В WordPress canonical обычно генерируется автоматически, но тема или SEO-плагин могут его переопределить. Если canonical указывает на несуществующий URL, на страницу с параметром или на архив вместо записи, поисковик может выбрать неправильную версию.
Для проверки откройте исходный код страницы и найдите строку вида:
<link rel="canonical" href="https://example.ru/primer-stranicy/" />Если canonical отсутствует или ведёт не туда, сначала ищите конфликт в теме, SEO-плагине или кастомном коде. Не исправляйте это через несколько разных плагинов одновременно.
Когда нужен код, а когда достаточно настроек
Не каждый дубль надо решать программированием. Если проблема в параметрах, архиве тегов или старой структуре ссылок, чаще хватает настроек и редиректов. Код нужен, когда дубли создаёт логика темы или плагина, и вы хотите контролировать поведение на уровне шаблона.
| Подход | Когда подходит | Минус |
|---|---|---|
| SEO-плагин | Закрыть архивы, задать canonical, управлять sitemap | Может не решить старые URL и сложные параметры |
| Редиректы на сервере | HTTP/HTTPS, www/non-www, старые структуры ссылок | Нужно аккуратно тестировать, чтобы не поймать цикл |
| Код в теме или mu-plugin | Нестандартные дубли от шаблона или фильтров | Требует поддержки при обновлениях |
Пример: убрать архив автора из индекса, но оставить страницу доступной
Если вам не нужен индексируемый архив автора, но сам URL должен открываться для пользователей, можно добавить noindex через фильтр. Важно: это не редирект, а именно запрет на индексацию.
add_filter('wp_robots', function ($robots) {
if (is_author()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Такой вариант уместен, если архивы нужны для навигации, но не должны конкурировать с основными страницами. Если архив вообще не нужен, лучше делать 301 на более релевантный раздел.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Нужно проверить, что:
- основной URL отдаёт
200 OK; - альтернативные версии отдают
301на нужный адрес; - canonical совпадает с основной версией;
- в sitemap остались только те URL, которые вы реально хотите индексировать;
- внутренние ссылки ведут на канонический адрес, а не на старые варианты.
Для быстрой проверки можно использовать curl:
curl -I https://example.ru/staryj-url/
curl -I https://example.ru/novyj-url/Если первый адрес не отдаёт 301, значит редирект не сработал. Если второй не отдаёт 200, вы могли случайно отправить на несуществующую страницу. После этого проверьте отчёт поисковой консоли: ошибки сканирования и страницы с дублированными canonical обычно проявляются не сразу, но их стоит отслеживать в течение нескольких обходов робота.
Частые ошибки и как их исправить
Ставят noindex вместо редиректа
Noindex убирает страницу из индекса, но не решает проблему дубля как таковую. Если у старого URL есть внешние ссылки или он уже ранжируется, 301 обычно полезнее. Noindex оставляйте для страниц, которые должны существовать для пользователей, но не участвовать в поиске.
Делают цепочку редиректов
Типичная ошибка: http ведёт на www, потом на HTTPS, потом на новый slug. Это лишняя задержка и риск ошибок. Лучше сразу редиректить на конечный адрес одной правилом или одним набором правил.
Оставляют в sitemap страницы, которые закрыли от индексации
Так поисковик получает противоречивые сигналы. Если страница закрыта, уберите её из sitemap. Если она важна, не закрывайте её без причины.
Не обновляют внутренние ссылки
Даже если редирект работает, внутренние ссылки должны вести сразу на канонический URL. Иначе вы создаёте лишнюю нагрузку на сервер и усложняете обход сайта роботами.
Практические советы по безопасности и производительности
Чистка дублей полезна не только для SEO. Меньше лишних URL — меньше обхода, меньше мусора в логах и меньше шансов, что старые адреса будут всплывать после обновления темы или плагина. Но любые массовые изменения лучше делать после бэкапа и на staging-копии.
Если на сайте много технических дублей из-за архивов, параметров и слабой структуры контента, имеет смысл пересмотреть и сам процесс публикации. Например, в связке с Clearfy Pro можно закрыть часть служебных архивов и убрать лишние SEO-дубли без ручной правки каждого шаблона, но только если вы понимаете, что именно отключаете и как это влияет на индексацию.
- сначала снимите список проблемных URL;
- сделайте резервную копию базы и файлов;
- внедряйте правки по одной группе дублей;
- после каждого изменения проверяйте заголовки ответа и canonical;
- не смешивайте редиректы, noindex и каноникал без необходимости.
Если хотите, чтобы статья не превратилась в набор ручных правок по шаблонам, начните с диагностики URL-структуры и только потом решайте, что закрывать, а что перенаправлять. В WordPress это почти всегда дешевле, чем потом разбирать последствия массовой индексации мусорных страниц.