Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы тегов, страницы пагинации, версии с www и без, HTTP и HTTPS, параметры в URL, вложенные страницы, а иногда и одинаковые записи, доступные по нескольким адресам. На сайте это быстро превращается в размывание веса страниц, лишние обходы робота и путаницу в индексации.
Ниже разберём не абстрактную теорию, а рабочий сценарий: как найти источник дублей, что закрывать редиректом, где достаточно canonical, и как проверить, что после правок поисковик видит только один основной адрес.
Как понять, что у вас именно дубли, а не обычная индексация
Сначала стоит отделить реальные дубли от похожих страниц. В WordPress нормально, что одна и та же запись доступна в архиве рубрики, на странице автора, в тегах и по прямой ссылке. Проблема начинается, когда поисковик индексирует несколько версий одного и того же URL как самостоятельные страницы.
Типичные признаки
- в поиске отображаются разные адреса одной страницы с одинаковым заголовком;
- в отчётах Search Console растёт число страниц с пометкой «дубликат, выбранный канонический URL отличается»;
- в индексе есть версии с параметрами
?replytocom=,?amp,?utm_...; - одна и та же запись открывается по
httpиhttps, сwwwи без него; - архивы, пагинация и страницы вложений дают слишком много однотипных URL.
Что проверить в первую очередь
- основной домен:
wwwили безwww; - принудительный переход на
https; - страницы вложений медиафайлов;
- архивы тегов и авторов;
- параметры в URL, которые создаёт тема или плагин;
- наличие одинакового контента в нескольких типах записей.
Диагностика проблемы: где искать источник дублей
Самый практичный способ — начать не с кода, а с фактических URL. Откройте несколько подозрительных страниц и сравните их исходный код. Важно посмотреть не только на адрес в браузере, но и на canonical, robots meta и цепочку редиректов.
Если у вас есть доступ к консоли, проверьте заголовки ответа и редиректы. Это помогает быстро увидеть, не отдаёт ли сайт несколько вариантов одной страницы.
curl -I https://example.com/page-name/Если нужно сравнить две версии адреса, например с www и без него:
curl -I https://www.example.com/page-name/Смотрите на три вещи: код ответа, Location при редиректе и наличие лишних промежуточных переходов. Если одна версия отдаёт 200 OK, а другая тоже открывается без редиректа, это уже источник дубля.
Проверка в WordPress без сторонних сервисов
В админке откройте:
- Настройки → Постоянные ссылки;
- Настройки → Общие;
- SEO-настройки темы или плагина, если они есть;
- список архивов рубрик, тегов, авторов и медиа-страниц.
Часто проблема лежит в настройках, а не в коде: сайт работает на HTTPS, но в базе или в настройках указан старый адрес; архивы тегов открыты, хотя они дублируют основной контент; страницы вложений индексируются отдельно.
Пошаговое решение: что закрывать редиректом, а что canonical
Здесь важно не пытаться «запретить всё подряд». Редирект нужен там, где есть явный технический дубль. Canonical подходит для страниц, которые должны открываться пользователю, но не должны конкурировать в индексе.
| Сценарий | Что делать | Компромисс |
|---|---|---|
| HTTP и HTTPS | 301-редирект на HTTPS | Без компромиссов, это техническая норма |
| www и без www | Выбрать один вариант и редиректить второй | Один основной адрес для всех ссылок |
| Страницы вложений | Редиректить на файл или родительскую запись | Если медиа-страницы не нужны в поиске |
| Архивы тегов/авторов | Закрыть от индексации или оставить canonical | Зависит от структуры сайта |
| Параметры сортировки и фильтров | Canonical на чистый URL, иногда noindex | Нужно смотреть на тип параметра |
Редирект для единого домена и HTTPS
Если сайт должен открываться только по HTTPS и без www, это лучше сделать на уровне сервера. Для Apache часто используют .htaccess, для Nginx — конфигурацию виртуального хоста. Ниже пример для .htaccess, если у вас Apache:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
</IfModule>Замените example.com на свой домен. Логика простая: всё, что приходит не в каноническом виде, уходит на один адрес с 301.
Canonical для страниц, которые не стоит дублировать
Если у вас есть страницы фильтров, сортировок или технические URL, которые должны открываться, но не должны конкурировать в выдаче, canonical обычно безопаснее, чем редирект. В WordPress canonical можно вывести через wp_head, если тема или SEO-плагин этого не делает корректно.
add_action('wp_head', function () {
if (is_page('catalog') && !empty($_GET['sort'])) {
$canonical = get_permalink(get_queried_object_id());
echo '<link rel="canonical" href="' . esc_url($canonical) . '" />' . "\n";
}
}, 1);Этот пример полезен, когда одна и та же страница каталога открывается с параметрами сортировки. Пользователь видит нужный вариант, а поисковик получает один основной адрес.
Страницы вложений лучше не оставлять как отдельные документы
Медиа-страницы в WordPress часто создают тонкий дубль: на странице почти нет контента, а индексироваться она может отдельно. Если вы не используете их осознанно, проще перенаправить вложение на сам файл или на родительскую запись.
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;
}
$file = wp_get_attachment_url(get_the_ID());
if ($file) {
wp_redirect($file, 301);
exit;
}
}
});Такой подход особенно полезен на сайтах, где изображения загружаются часто, а медиа-страницы не несут самостоятельной ценности.
Когда закрывать архивы и таксономии
Архивы рубрик и тегов не всегда вредны. Если у вас хорошо структурированный контент и архивы реально помогают навигации, их можно оставить. Но если тегов много, а на каждой странице по 1–2 записи, это почти всегда создаёт мусорные страницы.
Практическое правило простое: если архив не даёт пользователю отдельной ценности и не собирает нормальный набор материалов, его лучше закрыть от индексации или хотя бы не пускать в sitemap.
Что обычно отключают в первую очередь
- архивы тегов на небольших сайтах;
- архивы авторов, если автор один;
- страницы вложений;
- служебные страницы поиска по сайту;
- параметры сортировки и фильтров.
Если вы используете SEO-плагин, часть этих настроек можно сделать без кода. Если плагина нет или нужна точечная логика, используйте фильтры темы или собственный мини-плагин. Для сайтов, где нужно ещё и чистить дубли, полезно смотреть в сторону инструментов вроде Clearfy Pro, но только если задача действительно совпадает с его набором функций.
Проверка результата после внедрения
После правок не ограничивайтесь открытием страницы в браузере. Нужно проверить, что канонический адрес один, редиректы работают без цепочек, а поисковик не видит лишние версии.
Мини-чек-лист
- основной URL отдаёт
200 OK; - все альтернативные версии отдают
301на канонический адрес; - в исходном коде у страницы один корректный
rel="canonical"; - страницы вложений не индексируются отдельно, если это не нужно;
- в sitemap нет мусорных архивов и параметрических URL;
- в Search Console уменьшается число дублей и исключённых страниц.
Для быстрой ручной проверки откройте исходный код страницы и найдите canonical. Он должен указывать на ту же страницу без параметров и без лишних вариантов домена.
Что смотреть в Search Console
Если у вас подключена Google Search Console, проверьте отчёт по страницам и индексации. Там обычно видно, какие URL считаются дублями, какие выбраны как канонические и какие исключены из-за редиректа. Это лучший способ понять, не осталось ли скрытых вариантов адресов.
Частые ошибки и как их исправить
Ставят noindex вместо решения проблемы
Noindex не убирает дубль как техническую сущность. Страница всё равно существует, может обходиться роботом и конкурировать с основной версией. Если это явный дубль, сначала нужен редирект или canonical, а уже потом при необходимости noindex.
Делают редирект в несколько шагов
Например, http уходит на www, потом на https, потом ещё на конечный адрес со слешем. Такие цепочки замедляют загрузку и усложняют обход. Лучше свести всё к одному редиректу.
Оставляют страницы вложений открытыми
Это частая причина мусорной индексации. Если медиа-страницы не нужны как отдельные посадочные, перенаправляйте их на родительскую запись или файл.
Не учитывают параметры URL
Фильтры, сортировка, UTM-метки, пагинация и внутренние параметры могут создавать десятки вариантов одной страницы. Не все параметры нужно закрывать одинаково: часть лучше игнорировать в canonical, часть — редиректить, а часть — вообще не генерировать в ссылках.
Меняют canonical, но не исправляют внутренние ссылки
Если меню, хлебные крошки и кнопки ведут на неканоническую версию, поисковик и пользователи будут продолжать попадать на дубли. После правок проверьте внутренние ссылки по шаблонам темы и в контенте.
Практические советы по безопасности и производительности
Любые правки редиректов и canonical лучше вносить не в functions.php активной темы, а в небольшой собственный плагин или mu-plugin. Так вы не потеряете изменения при обновлении темы и сможете быстрее откатить правку, если что-то пойдёт не так.
Перед массовыми изменениями сделайте резервную копию базы и проверьте сайт на staging-копии. Особенно это важно, если планируете менять правила редиректов на уровне сервера: одна ошибка в условии может отправить в цикл весь сайт.
Если дублей много из-за технического мусора, сначала уберите генерацию лишних URL, потом уже чистите индекс. Иначе вы будете просто маскировать проблему, а не решать её.
Для сайтов с большим количеством служебных страниц и SEO-ошибок полезно сочетать ручную настройку с плагином, который умеет убирать дубли и чистить лишние архивы. Но даже в этом случае проверка через заголовки ответа, canonical и Search Console остаётся обязательной: именно она показывает, сработало ли решение на практике.