Устранение дублей страниц в WordPress и настройка canonical

Дубли в WordPress обычно появляются не из-за одной ошибки, а из-за набора мелких настроек: архивы категорий и тегов, пагинация, страницы автора, параметры сортировки, версии с www и без него, а иногда еще и технические URL от темы или плагина. В результате поисковик видит несколько адресов с почти одинаковым контентом и сам выбирает, какой считать основным. Это почти всегда хуже, чем явно задать правила.

Ниже разберем рабочий сценарий: как найти источник дублей, что закрывать от индексации, где ставить canonical и когда лучше не трогать URL, а менять структуру шаблонов.

Как понять, что у сайта есть проблема с дублями

Не стоит начинать с массового закрытия всего подряд. Сначала проверьте, какие именно страницы индексируются и какие URL повторяются. Для WordPress типичные сигналы такие:

  • в индексе есть и записи, и их архивы по тегам, хотя теговые страницы почти пустые;
  • одна и та же статья открывается с параметрами вроде ?replytocom=, ?amp, ?utm_* или сортировкой;
  • страницы пагинации дублируют заголовки и метаописания первой страницы архива;
  • есть версии сайта с www и без него, а также с разными слешами на конце;
  • в поиске всплывают страницы автора на сайте, где один автор и все записи уже доступны через рубрики.

Если у вас есть доступ к Google Search Console, откройте отчет по страницам и посмотрите, какие URL помечены как дубликат, выбранный пользователем не канонический или альтернативная страница с правильным каноническим тегом. Это не всегда ошибка, но хороший ориентир, где искать причину.

Быстрая диагностика через сайт и сервер

Проверка вручную тоже полезна. Откройте несколько URL одного и того же контента с разными параметрами и сравните HTML. Если на странице есть тег canonical, он должен указывать на одну основную версию. Если его нет или он меняется в зависимости от параметра, это уже повод править шаблон или SEO-настройки.

curl -I https://example.com/post-name/?utm_source=test

В ответе смотрите не только код 200, но и редиректы. Если параметр не должен влиять на контент, а URL не редиректится и еще и индексируется, поисковик получает лишний дубль.

Что именно нужно исправить в WordPress

Универсального переключателя нет: часть дублей закрывается настройками SEO-плагина, часть — правкой темы, часть — редиректами на уровне сервера. Правильный подход зависит от типа URL.

СценарийЧто делатьКомпромисс
Теговые архивы почти пустыеЗакрыть от индексации или удалить из карты сайтаПотеря трафика по редким тегам, если они реально используются
Параметры сортировки и фильтровСтавить canonical на основную страницу или делать 301 для ненужных параметровНужно аккуратно проверить, не ломаются ли рабочие ссылки
Пагинация архивовОставить в индексе, но не дублировать title и descriptionНельзя просто закрыть все страницы пагинации без анализа
Версии www / non-wwwВыбрать один вариант и настроить 301Требуется единая настройка в CMS и на сервере

1. Уберите технические дубли на уровне адресов

Если сайт доступен по нескольким вариантам домена, сначала зафиксируйте один основной. В WordPress это делается через Настройки → Общие, где URL WordPress и URL сайта должны совпадать с выбранным вариантом. После этого на сервере настройте редирект со второго варианта на основной.

Для Apache это обычно делается через .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Для Nginx логика та же, но конфиг будет другой. Важен не синтаксис, а принцип: один URL — один ответ 200, все остальные варианты — 301.

2. Настройте canonical для архивов и страниц с параметрами

Если SEO-плагин уже умеет выводить canonical, проверьте, не подменяет ли его тема. В норме canonical на странице с параметрами должен указывать на чистый адрес без лишних query string. Для записей и страниц canonical обычно совпадает с основным URL записи.

Когда нужно вручную поправить canonical в теме, используйте фильтр wpseo_canonical только если у вас действительно установлен Yoast SEO. Для универсального решения лучше не привязываться к конкретному плагину без необходимости. Если же вы пишете собственную тему или плагин, canonical можно вывести через rel_canonical() в <head> и не дублировать его вручную в шаблонах.

<?php
add_action( 'wp_head', function () {
    if ( is_singular() ) {
        rel_canonical();
    }
}, 1 );

Этот вариант не решает все типы дублей, но помогает не сломать базовую канонизацию, если тема ее случайно убрала.

3. Закройте от индексации пустые или слабые архивы

Теги, авторы и некоторые таксономии часто создают много страниц без самостоятельной ценности. Если архивы не несут отдельного смысла, их лучше либо закрыть от индексации, либо убрать из карты сайта. Здесь важно не путать noindex и disallow: если закрыть URL в robots.txt, поисковик может не увидеть canonical и другие сигналы. Для дублей это обычно плохой путь.

Практичнее использовать SEO-плагин и выставить noindex, follow для конкретных архивов. Тогда бот сможет пройти по ссылкам, но не будет считать архив самостоятельной посадочной страницей.

Пошаговое решение без лишнего риска

  1. Соберите список URL с одинаковым контентом: записи, архивы, параметры, страницы автора.
  2. Выберите основной URL для каждого кластера дублей.
  3. Настройте 301-редирект для технических вариантов адреса.
  4. Проверьте canonical на страницах с параметрами и в архивах.
  5. Закройте от индексации архивы, которые не должны ранжироваться.
  6. Обновите карту сайта и уберите из нее ненужные типы страниц.
  7. После изменений перепроверьте ответ сервера и HTML.

Если у вас много дублей из-за параметров, иногда удобнее поставить правило на уровне functions.php или небольшого плагина. Например, можно принудительно редиректить часть параметров, которые не должны менять содержимое страницы:

<?php
add_action( 'template_redirect', function () {
    if ( is_admin() ) {
        return;
    }

    $blocked = array( 'replytocom', 'sort', 'filter' );

    foreach ( $blocked as $param ) {
        if ( isset( $_GET[ $param ] ) ) {
            wp_safe_redirect( remove_query_arg( $param ), 301 );
            exit;
        }
    }
} );

Это не универсальный рецепт. Перед внедрением проверьте, не используются ли эти параметры в реальной навигации сайта. Если параметр нужен для фильтрации каталога или поиска по сайту, редиректить его нельзя.

Как проверить, что решение сработало

После правок не ограничивайтесь визуальной проверкой. Нужны три уровня контроля: сервер, HTML и индекс.

  • Откройте основной URL и альтернативный URL с параметром — второй должен либо редиректиться, либо иметь canonical на основной адрес.
  • Проверьте исходный код страницы и убедитесь, что canonical не меняется от лишних query string.
  • Посмотрите в Search Console, уменьшается ли число страниц с пометкой о дубликатах.
  • Проверьте карту сайта: в ней не должно быть архивов, которые вы закрыли от индексации.

Для быстрой ручной проверки удобно сравнить заголовки и HTML через curl:

curl -I https://example.com/category/news/
curl -I https://example.com/category/news/?sort=popular

Если второй URL отвечает 301 на первый, это хороший знак. Если оба отдают 200, но canonical одинаковый, ситуация тоже рабочая, хотя редирект часто надежнее для явно технических параметров.

Частые ошибки и почему они ломают индексацию

Закрыть все дубли через robots.txt

Это распространенная ошибка. Когда URL запрещен в robots.txt, поисковик может не увидеть canonical и не понять, что вы хотели считать основным. Для дублей лучше использовать редирект, canonical или noindex в зависимости от сценария.

Ставить noindex на все подряд

Если закрыть и записи, и архивы, и пагинацию без разбора, можно случайно убрать из индекса полезные страницы. Особенно это заметно на сайтах, где рубрики реально собирают трафик.

Оставлять дубли в карте сайта

Если страница закрыта от индексации, но продолжает попадать в sitemap.xml, вы посылаете поисковику противоречивые сигналы. Карта сайта должна содержать только те URL, которые вы действительно хотите индексировать.

Менять canonical на каждой странице вручную

Ручная правка в шаблонах быстро превращается в хаос: один шаблон обновили, другой забыли. Лучше вынести логику в тему или SEO-плагин и проверить, что она работает одинаково для всех типов записей.

Что еще стоит проверить для чистоты сайта

Если вы уже занялись дублями, заодно посмотрите на лишние страницы, которые часто создают шум в индексации: результаты внутреннего поиска, служебные страницы, старые вложения медиафайлов, страницы автора без контента. Для части из них достаточно отключить индексацию, для части — настроить редирект на родительскую запись или медиафайл.

На проектах, где много технического мусора, иногда помогает комплексная чистка через плагины вроде Clearfy Pro: он закрывает часть типовых дублей, убирает лишние элементы из head и помогает привести SEO-настройки к единому виду. Но даже такой инструмент не заменяет проверку конкретных URL — особенно если проблема сидит в теме или в кастомном коде.

Если после правок дубли не исчезают, ищите источник в шаблонах темы, в генерации архивов и в сторонних плагинах, которые создают собственные страницы без явной необходимости. В WordPress почти всегда можно найти, кто именно генерирует лишний URL, если сравнить HTML, заголовки ответа и карту сайта.

Вам также может быть интересно:

Как отключить XML-RPC в WordPress и не сломать Jetpack и мобильные приложения
26.09.2026
Как отловить и исправить 404 после смены структуры URL в WordPress
22.09.2026
Устранение дублей страниц в WordPress и настройка canonical
16.09.2026
Как закрыть от индексации страницы автора и архивы в WordPress
19.09.2026
Как отключить emoji в WordPress и убрать лишние скрипты из head
29.09.2026
×
до 3225₽

Продавай темы и плагины WordPress!

Лови с каждой продажи

Начать ⋙