Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы, пагинация, параметры в URL, страницы тегов, версии с www и без www, HTTP и HTTPS, а иногда и из-за темы или SEO-плагина. Если это не контролировать, поисковик начинает индексировать несколько адресов одной и той же страницы, а вес ссылок размазывается по копиям.
Ниже — рабочий сценарий: как найти источник дублей, что именно править в WordPress и как проверить, что канонизация действительно сработала.
Когда дубли становятся проблемой
Не каждый повтор URL — это ошибка. Проблема начинается, когда одна и та же сущность доступна по нескольким адресам и поисковик может выбрать не тот вариант. Типичные примеры:
- страница записи открывается и по
/post/, и по/post; - архив рубрики доступен с пагинацией и без неё, но canonical указывает не туда;
- страницы с параметрами
?utm_*или?replytocom=попадают в индекс; - один и тот же контент доступен через теги, категории и архив автора;
- сайт открывается по нескольким версиям домена или протокола.
Быстрая диагностика дублей
Сначала не трогайте код. Проверьте, какие URL реально существуют и что отдают в ответ. Для этого достаточно открыть несколько вариантов одной страницы и посмотреть заголовки ответа и canonical в HTML.
curl -I https://example.com/sample-post/curl -I https://example.com/sample-postЕсли один адрес отдаёт 200 OK, а второй тоже открывается без редиректа, это уже повод проверить настройки постоянных ссылок и редиректов. Если оба адреса доступны, но canonical указывает на разные URL, поисковик получает противоречивые сигналы.
В браузере откройте исходный код страницы и найдите тег:
<link rel="canonical" href="https://example.com/sample-post/" />Canonical должен указывать на единственный предпочтительный URL. Если там стоит адрес с параметрами, без слэша или с неправильным доменом, это нужно исправлять в теме, плагине или серверной конфигурации.
Что проверять в WordPress в первую очередь
В WordPress дубли часто создаются не контентом, а шаблонами архива и техническими страницами. Поэтому сначала проверьте настройки, которые влияют на генерацию URL.
Постоянные ссылки и редиректы
Откройте Настройки → Постоянные ссылки и убедитесь, что структура не менялась недавно. После смены структуры старые URL могут остаться доступными, если сервер или плагин редиректов настроен неполно. Для записей и страниц лучше иметь один стандарт: либо со слэшем, либо без него, но не оба варианта одновременно.
Архивы таксономий и авторов
Если сайт небольшой и рубрики, теги или архивы автора не несут самостоятельной ценности, их лучше либо закрывать от индексации, либо настраивать canonical на основную страницу. Иначе поисковик может индексировать десятки слабых страниц с почти одинаковым набором записей.
Параметры в URL
Параметры вроде ?utm_source=, ?replytocom=, ?amp и фильтры сортировки часто создают копии. Часть из них нужна для аналитики или функциональности, но в индекс они обычно не должны попадать.
| Подход | Что делает | Когда подходит | Минус |
|---|---|---|---|
| SEO-плагин | Генерирует canonical и управляет noindex | Если нужен быстрый контроль без кода | Легко получить конфликт настроек |
| Код в теме/плагине | Точечно меняет canonical и robots | Если нужен точный контроль над отдельными типами страниц | Нужно следить за обновлениями и тестами |
| Серверные редиректы | Сводит дубли к одному URL | Для www/non-www, http/https, слэша | Ошибки могут сломать доступ к сайту |
Пошаговое решение: canonical, noindex и редиректы
Лучший порядок такой: сначала выбрать основной URL, потом убрать доступ к дублям, затем проверить, что canonical и индексация совпадают.
Шаг 1. Задайте один основной вариант адреса
На уровне сайта определите:
- один домен:
wwwили безwww; - один протокол: только
https; - один формат слэша в конце URL;
- один способ обработки архивов и служебных страниц.
Если это не зафиксировать, любые дальнейшие настройки canonical будут лишь маскировать проблему.
Шаг 2. Настройте canonical для записей и страниц
Если SEO-плагин уже выводит canonical, проверьте, не переопределяет ли его тема. Когда нужен точечный контроль, можно добавить фильтр в мини-плагин или functions.php. Пример ниже меняет canonical только для конкретного шаблона или типа записи.
<?php
add_filter('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, а не в редиректах.
Шаг 3. Закройте технические страницы от индексации
Для страниц поиска, архивов с параметрами и некоторых служебных URL обычно лучше использовать noindex,follow. Это не удаляет страницу с сайта, но снижает шанс, что поисковик будет считать её основной.
<?php
add_filter('wp_robots', function ($robots) {
if (is_search() || is_author()) {
$robots['noindex'] = true;
$robots['follow'] = true;
}
return $robots;
});Не ставьте noindex на всё подряд. Если закрыть рубрики или страницы, которые реально приводят трафик, можно потерять полезные входные точки.
Шаг 4. Уберите дубли с параметрами через редирект
Если у вас есть параметры, которые не должны создавать отдельные страницы, проще отправлять их на чистый URL. Для этого подойдёт ранний редирект на уровне WordPress:
<?php
add_action('template_redirect', function () {
if (is_admin()) {
return;
}
if (isset($_GET['replytocom'])) {
wp_safe_redirect(remove_query_arg('replytocom'), 301);
exit;
}
});Для UTM-меток обычно редирект не нужен, если они используются только в аналитике и не индексируются. Но если такие URL уже попали в индекс, canonical на чистую страницу обязателен.
Проверка результата после внедрения
После правок не ограничивайтесь визуальной проверкой. Нужно убедиться, что сервер, HTML и поисковый индекс дают согласованные сигналы.
- Откройте основной URL и его дубль: дубль должен редиректить на канонический адрес или отдавать
noindex. - Проверьте исходный код страницы: canonical должен вести на один и тот же URL.
- Посмотрите заголовки ответа для дублей через
curl -I. - В Google Search Console проверьте, какой URL выбран каноническим, если данные уже есть.
- Убедитесь, что в sitemap нет служебных страниц и параметризованных URL.
Если canonical правильный, но дубль всё равно индексируется, обычно проблема в том, что страница доступна без редиректа и не закрыта от индексации. В этом случае canonical сам по себе не всегда достаточно силён.
Частые ошибки и как их исправить
Canonical указывает на несуществующий или редиректящий URL
Это частая ошибка после смены структуры ссылок. Поисковик видит цепочку сигналов и может игнорировать canonical. Исправление простое: canonical должен вести сразу на конечный адрес без промежуточных редиректов.
Редирект есть, но canonical остался старым
Так бывает, если редирект настроен на сервере, а canonical генерирует тема или SEO-плагин. В итоге браузер уходит на правильную страницу, а в HTML остаётся старый адрес. Нужно синхронизировать оба уровня.
Закрыли от индексации не ту страницу
Например, noindex поставили на рубрику, которая даёт трафик, а дубль с параметром оставили открытым. Сначала определите, какая версия должна быть основной, и только потом режьте лишнее.
Конфликт SEO-плагина и темы
Если тема вручную выводит canonical, а SEO-плагин делает то же самое, в коде страницы может оказаться два тега canonical. Это нужно исправлять сразу: один источник истины для canonical, не два.
Практические советы по безопасности и производительности
При работе с дублями легко увлечься массовыми редиректами и случайно создать лишнюю нагрузку. Несколько правил помогают не усложнять сайт:
- не делайте тяжёлые проверки в каждом запросе, если можно решить вопрос на уровне конфигурации сервера;
- не редиректите все параметры подряд, если часть из них нужна для функциональности;
- перед изменениями сохраните резервную копию базы и файла
.htaccessили конфигурации nginx; - после правок очистите кеш страницы и объектный кеш, если он используется;
- не ставьте несколько SEO-плагинов одновременно — они часто конфликтуют именно в canonical и robots.
Если нужен более широкий контроль над дублями, каноническими URL и технической чисткой сайта, в экосистеме WPShop есть Clearfy Pro: https://wpshop.ru/plugins/clearfy?utm_source=wpone.ru&utm_medium=article&utm_campaign=kak-ubrat-dubli-stranic-v-wordpress-i-nastroit-kanonicheskie-url. Но даже с плагином важно понимать, какие URL вы хотите оставить основными, а какие убрать из индекса.
Рабочий критерий простой: одна сущность — один канонический адрес, один способ открытия, один сигнал для поисковика. Если после правок это выполняется, дубли перестают расползаться по индексу и сайт становится предсказуемее для SEO и поддержки.