Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы автора, пагинация, параметры ?replytocom, UTM-метки, версии с и без слеша, HTTP и HTTPS, www и без www. В итоге поисковик видит несколько URL с одинаковым или почти одинаковым содержимым, а сайт теряет управляемость в индексации.
Ниже — рабочий сценарий: сначала быстро понять, какие дубли у вас есть, затем убрать лишние версии на уровне WordPress и сервера, а после этого проверить, что канонические URL и редиректы отрабатывают как надо.
Как понять, что проблема именно в дублях
Симптомы обычно заметны в Search Console и в логах обхода: одна и та же страница индексируется по разным адресам, в отчётах растёт число «Просканировано, но не проиндексировано», а в выдаче иногда всплывают служебные URL вместо основной страницы.
Что проверить в первую очередь
- Откройте одну и ту же запись с параметрами
?replytocom=1,?utm_source=...и без них. - Сравните адреса с
httpsиhttp, сwwwи безwww. - Посмотрите, не доступны ли архивы тегов, авторов и дат, если они не нужны для SEO.
- Проверьте пагинацию:
/page/2/,/page/3/и так далее должны вести на свои страницы, но не создавать лишние копии основного контента.
Если у вас есть доступ к Search Console, откройте отчёт по страницам и сравните канонический URL, выбранный Google, с тем, который вы задаёте сами. Несовпадение — частый признак того, что каноникал настроен непоследовательно или вообще отсутствует.
Какие дубли WordPress создаёт чаще всего
На практике чаще всего мешают не «плохие» страницы, а системные URL, которые WordPress и тема генерируют автоматически. Их можно оставить, но тогда нужно явно управлять индексацией и каноническими адресами.
| Источник дубля | Что делать | Компромисс |
|---|---|---|
| Архивы тегов и авторов | Закрыть от индексации или удалить, если не нужны | Теряете часть внутренней перелинковки |
Параметры ?replytocom, UTM, сортировки | Ставить canonical на чистый URL и при необходимости редиректить | Параметры для аналитики остаются, но не индексируются |
| Версии с www / без www, http / https | Сделать один основной вариант через 301 | Нужна аккуратная настройка сервера |
| Пагинация архивов | Оставить доступной, но не путать с основной страницей | Нельзя бездумно закрывать все страницы пагинации |
Пошаговое решение: убираем дубли и задаём canonical
Шаг 1. Приведите сайт к одному основному формату URL
Сначала выберите единственный вариант домена и протокола. Это базовая точка, без которой остальные меры будут работать непоследовательно.
Если используете Apache, можно задать редирект на https://example.com без www в .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]Для Nginx логика похожая, но правило пишется в конфиге сервера. Смысл один: все варианты должны сводиться к одному каноническому адресу через 301.
Шаг 2. Отключите лишние архивы, если они не нужны
Если у вас нет задачи продвигать архивы авторов, дат или тегов, не держите их открытыми просто «на всякий случай». Это частый источник тонких дублей и пустых страниц.
В теме или в небольшом плагине можно добавить фильтры для robots и canonical. Ниже пример, который закрывает архивы авторов и дат от индексации, но не ломает работу сайта:
add_filter('wp_robots', function ($robots) {
if (is_author() || is_date()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Если архивы вам вообще не нужны, лучше не только закрыть их от индексации, но и убрать ссылки на них из темы и виджетов, чтобы не плодить обход.
Шаг 3. Нормализуйте canonical для записей и страниц
WordPress сам выводит canonical в большинстве стандартных шаблонов, но проблемы начинаются, когда тема или SEO-плагин подменяют его нестабильно. Проверяйте, чтобы на каждой записи был один канонический URL без параметров и без альтернативных версий.
Если нужен точечный контроль, можно переопределить canonical для конкретных типов страниц:
add_filter('wp_get_canonical_url', function ($canonical, $post) {
if (!$post instanceof WP_Post) {
return $canonical;
}
if ($post->post_type === 'post') {
return get_permalink($post);
}
return $canonical;
}, 10, 2);Этот фильтр не стоит использовать для «магического лечения всего сайта». Он полезен, когда у вас есть конкретный шаблон или тип записи, который отдаёт неправильный canonical после кастомизации темы.
Шаг 4. Уберите индексируемые параметры из URL
Параметры вроде utm_* сами по себе не проблема, если поисковик видит canonical на чистую страницу. Но если тема или плагин генерируют отдельные страницы под каждый параметр, дубли быстро множатся.
Для параметров комментариев replytocom можно сделать редирект на чистый URL:
add_action('template_redirect', function () {
if (isset($_GET['replytocom'])) {
$url = remove_query_arg('replytocom');
wp_safe_redirect($url, 301);
exit;
}
});С UTM-метками так делать не всегда удобно, потому что они нужны аналитике. В этом случае достаточно canonical на чистый URL и корректной настройки Search Console.
Шаг 5. Проверьте пагинацию и архивы рубрик
Пагинация не является дублем сама по себе, но ошибки возникают, когда страницы /page/2/ и дальше получают одинаковые title, description и canonical на первую страницу. Это уже мешает индексации.
Для архивов важно, чтобы каждая страница пагинации имела свой URL и не подменялась на главную. Если у вас SEO-плагин, проверьте его шаблоны title и canonical. Если работаете без плагина, убедитесь, что тема не хардкодит одинаковые мета-теги на всех страницах архива.
Если нужен быстрый способ без кода
Когда задача не в глубокой кастомизации, а в быстрой уборке дублей, можно использовать SEO-плагин или инструмент для чистки технических дублей. Например, в Clearfy Pro есть набор настроек для отключения лишних архивов, служебных страниц и технических дублей. Это не заменяет проверку canonical и редиректов, но помогает быстро привести сайт в порядок, если тема генерирует слишком много лишнего HTML и архивов.
Код и плагин не взаимоисключают друг друга: плагин закрывает типовые сценарии, а код нужен там, где у вас нестандартная тема, кастомные типы записей или конфликт между несколькими SEO-решениями.
Как проверить, что решение сработало
После внедрения не ограничивайтесь визуальной проверкой в браузере. Нужна техническая валидация.
- Откройте основной URL и убедитесь, что альтернативные варианты редиректят на него с кодом 301.
- Проверьте исходный код страницы: canonical должен указывать на чистый адрес без параметров.
- Пройдитесь по URL с
?replytocom=1и убедитесь, что они не остаются в индексе и не создают отдельные страницы. - В Search Console сравните выбранный Google canonical и ваш канонический URL.
- Посмотрите, не появились ли ошибки 404 после закрытия архивов или изменения структуры ссылок.
Удобная быстрая проверка через консоль браузера:
document.querySelector('link[rel="canonical"]')?.hrefЕсли результат отличается от ожидаемого адреса, проблема уже не в индексации, а в шаблоне темы, SEO-плагине или фильтре, который подменяет canonical.
Частые ошибки и как их исправить
Закрыли от индексации всё подряд
Иногда после борьбы с дублями закрывают и полезные страницы: рубрики, пагинацию, авторов, архивы. В итоге сайт теряет внутреннюю структуру. Исправление простое: закрывайте только те типы страниц, которые реально не несут ценности, а не весь архивный слой целиком.
Сделали canonical, но не убрали редиректные петли
Если сайт одновременно редиректит с www на без www, с http на https и ещё меняет слеши на конце URL, легко получить цепочку из нескольких переходов. Это замедляет обход и усложняет диагностику. Нужен один прямой 301-редирект без промежуточных шагов.
Оставили UTM-страницы без canonical
Для аналитики UTM полезны, но если canonical не задан или задан неправильно, поисковик может начать считать каждую метку отдельной страницей. Исправление: canonical на чистый URL плюс проверка шаблонов темы и SEO-плагина.
Сломали пагинацию архивов
Частая ошибка — ставить canonical всех страниц пагинации на первую страницу архива. Так вы фактически сообщаете поисковику, что страницы 2, 3 и далее не нужны, хотя на них есть уникальный набор записей. Для пагинации canonical должен быть логичным и соответствовать реальному URL страницы.
Что учесть для безопасности и производительности
Чистка дублей — это не только про SEO. Чем меньше лишних URL и служебных страниц, тем меньше мусорного обхода и меньше шансов, что бот будет тратить ресурсы на бесполезные адреса.
- Не ставьте редиректы на уровне PHP там, где можно сделать это на сервере: серверный 301 обычно дешевле по ресурсам.
- Не используйте несколько SEO-плагинов одновременно — они часто конфликтуют в canonical и robots.
- После изменений очистите кэш страницы и объектный кэш, если он есть.
- Если отключаете архивы, проверьте меню, хлебные крошки и внутренние ссылки, чтобы не оставить битые переходы.
Если сайт большой, полезно сначала собрать список проблемных URL из логов и Search Console, а уже потом вносить правки. Так вы не будете закрывать то, что на самом деле приносит трафик.