Дубли в WordPress редко выглядят как одна очевидная ошибка. Чаще это набор мелких расхождений: версия со слэшем и без, страницы с параметрами, архивы тегов, пагинация, дубли категорий, а иногда и одинаковый контент в разных шаблонах. Если не разобраться с источником, поисковик сам выберет канонический URL, но не всегда так, как нужно вам.
Ниже — рабочий сценарий: как найти дубли, что править в первую очередь и как проверить, что после изменений сайт не потерял нужные страницы из индекса.
Как понять, что на сайте есть дубли страниц
Симптомы обычно видны в Search Console, логах сканирования или прямо в выдаче. Но прежде чем что-то удалять, нужно понять, какой именно тип дубля у вас появился. В WordPress это важно: одна и та же сущность может открываться по разным адресам из-за настроек пермалинков, плагинов, фильтров и темы.
Типичные признаки
- в индексе есть несколько URL с одинаковым title и почти одинаковым текстом;
- страницы доступны и по HTTP, и по HTTPS, или с www и без www;
- архивы категорий и тегов повторяют фрагменты записей;
- страница открывается с параметрами
?replytocom=,?utm_,?ampили сортировкой; - один и тот же контент доступен в пагинации, например
/page/2/и через внутренние ссылки без каноникал; - в отчёте «Страницы с дублирующимся, отправленным пользователем canonical» видно, что поисковик игнорирует ваш canonical.
Что проверить в первую очередь
- Настройки Постоянные ссылки в админке.
- Редирект с HTTP на HTTPS и с non-www на www или наоборот.
- Архивы тегов, авторов, дат и вложений.
- Параметры URL, которые добавляют плагины аналитики, фильтров и комментариев.
- Канонические URL в исходном коде страницы.
Диагностика: где именно рождается дубль
Самая частая ошибка — пытаться закрыть всё через noindex или массовые редиректы, не разобравшись с источником. Сначала нужно понять, это проблема маршрутизации, шаблона или индексации.
Проверка через браузер и исходный код
Откройте проблемную страницу и посмотрите:
- какой URL отображается в адресной строке;
- есть ли в
<head>тег<link rel="canonical" ...>; - не меняется ли адрес после загрузки скриптами;
- нет ли в контенте одинаковых блоков, вставленных дважды через шаблон и через редактор.
Если canonical отсутствует или указывает на другой адрес, это уже повод проверить тему и SEO-плагины. Иногда два плагина одновременно выводят canonical, и поисковик получает конфликтующие сигналы.
Проверка через WP-CLI и поиск по базе
Если есть доступ к консоли, можно быстро найти записи с одинаковым slug или подозрительные служебные страницы. Полезно смотреть не только записи, но и термины таксономий.
wp post list --post_type=page --fields=ID,post_title,post_name,post_status --format=tablewp term list category --fields=term_id,name,slug,count --format=tableЕсли видите несколько страниц с почти одинаковыми названиями и разными slug, проверьте, не создавались ли они вручную при переносе сайта или импорте контента.
Что делать: пошаговое решение
Ниже порядок, который обычно даёт предсказуемый результат и не ломает SEO на живом сайте.
1. Приведите к одному виду базовые URL
Сначала выберите одну основную версию домена и протокол: HTTPS, а также www или без www. Это делается на уровне сервера или через редирект, а не через каноникал. Canonical — это подсказка, редирект — это уже жёсткое указание.
Для Apache можно использовать такой вариант в .htaccess:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^ https://example.ru%{REQUEST_URI} [L,R=301]Подставьте свой домен и проверьте, чтобы не было цепочки из двух-трёх редиректов подряд.
2. Закройте служебные архивы, если они не нужны
Если у вас контентный сайт, архивы автора, даты и вложений часто создают лишние страницы без пользы для поиска. Их можно отключить в SEO-плагине или через код, если вы точно понимаете последствия.
Например, для вложений лучше перенаправлять страницу 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;
}
}
});Этот код не удаляет медиафайл и не трогает библиотеку, он только убирает бесполезную страницу-вложение из индекса.
3. Настройте canonical для страниц с параметрами
Если на сайте есть фильтры, сортировка или UTM-метки, canonical должен указывать на чистый URL без параметров. В большинстве случаев это делает SEO-плагин, но после кастомизации шаблона лучше проверить вывод вручную.
Для страниц с параметрами можно добавить свой canonical, если тема его не выводит корректно:
add_action('wp_head', function () {
if (is_singular()) {
$canonical = get_permalink();
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}
}, 1);Важно: не выводите второй canonical, если его уже добавляет SEO-плагин. Сначала проверьте исходный код страницы.
4. Уберите дубли из архивов и таксономий
Если категории и теги повторяют один и тот же контент, не всегда нужно удалять их полностью. Иногда достаточно:
- оставить индексируемыми только категории;
- закрыть теги от индексации;
- сократить количество архивов автора;
- отключить архивы дат, если они не используются.
Для небольших сайтов это часто даёт более чистую структуру без потери навигации.
5. Проверьте пагинацию и внутренние ссылки
Пагинация сама по себе не дубль, но проблемы начинаются, когда страницы разделов повторяют одинаковые блоки и не имеют уникального контекста. Убедитесь, что:
- страницы
/page/2/,/page/3/доступны и не редиректят на первую; - в хлебных крошках и меню нет ссылок на параметры сортировки;
- в шаблоне не дублируется один и тот же список записей в нескольких блоках.
Сравнение подходов: плагин, код или ручная настройка
| Подход | Когда подходит | Плюсы | Минусы |
|---|---|---|---|
| SEO-плагин | Нужно быстро закрыть архивы, canonical и мета-теги | Меньше кода, проще поддержка | Не решает серверные редиректы и ошибки шаблона |
| Код в теме или mu-plugin | Нужна точечная логика для attachments, параметров, редиректов | Гибкость, контроль над поведением | Можно сломать сайт при обновлении, если править тему напрямую |
| Ручная настройка на сервере | Нужно привести домен и протокол к одному виду | Самый надёжный уровень для базовых редиректов | Требует доступа к серверу и аккуратной проверки |
Если нужен инструмент для чистки дублей, служебных архивов и SEO-хаоса без ручной правки каждого шаблона, обычно проще начать с Clearfy Pro. Но даже в этом случае редиректы домена и проверку canonical лучше делать отдельно, а не надеяться только на плагин.
Как проверить, что решение сработало
После правок не ограничивайтесь открытием главной страницы. Нужна проверка по нескольким уровням.
Чек-лист проверки
- Один и тот же URL открывается только в одной версии: HTTPS, один хост, один формат слэша.
- Страницы вложений редиректят на родительскую запись или файл.
- В исходном коде каждой важной страницы есть один canonical.
- Архивы тегов, дат и авторов либо закрыты от индексации, либо действительно нужны.
- В Search Console уменьшается число страниц с дублирующимся canonical и параметрических URL.
- Нет цепочек редиректов и 404 после изменения структуры ссылок.
Для быстрой локальной проверки удобно использовать curl:
curl -I https://example.ru/page/Смотрите на 301, 200 и конечный URL в заголовке Location. Если есть несколько переходов подряд, лучше сократить цепочку.
Частые ошибки и как их исправить
Ставят noindex на всё подряд
Это частая реакция на дубли, но она слишком грубая. Если закрыть от индексации важные категории или страницы пагинации, можно потерять нормальную структуру сайта. Сначала определите, что именно является дублем, а что — полезным архивом.
Оставляют два источника canonical
Так бывает, когда canonical выводит SEO-плагин, а в теме добавили ещё один через wp_head. В результате поисковик получает конфликтующие сигналы. Решение простое: оставьте один источник и проверьте исходный код.
Делают редирект всех URL с параметрами на главную
Это плохая практика. UTM-метки и некоторые служебные параметры не должны ломать страницу. Обычно достаточно canonical на чистый URL, а редирект нужен только для действительно лишних служебных адресов.
Удаляют архивы без проверки внутренней перелинковки
Если архивы тегов или авторов были частью навигации, после их отключения часть ссылок может вести в пустоту. Перед удалением проверьте меню, хлебные крошки, блоки «похожие записи» и виджеты.
Что ещё стоит учесть для безопасности и производительности
Когда вы чистите дубли, не забывайте, что массовые редиректы и фильтры URL могут нагружать сервер. Если логика сложная, лучше вынести её в mu-plugin, а не в functions.php активной темы. Так код не потеряется при смене темы и проще контролировать изменения.
Ещё один практический момент: после чистки дублей полезно пересобрать sitemap и отправить его в поисковые системы заново. Но не делайте это до того, как проверили редиректы и canonical, иначе поисковик может получить противоречивую карту сайта.
Если сайт большой, сначала меняйте только одну группу URL: например, вложения или архивы тегов. Так проще отследить, что именно повлияло на индексацию, и не искать причину среди десятка правок одновременно.