Как убрать дубли страниц в WordPress: canonical, noindex и пагинация без потери индексации

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

Ниже — рабочая схема, как найти источник дублей и закрыть его без лишней агрессии. Важно не «запретить всё подряд», а оставить в индексе те страницы, которые реально нужны.

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

Первый сигнал — в Google Search Console растёт число страниц с пометкой о дублировании, а в индексе оказываются URL с параметрами, страницами пагинации или архивами таксономий, которые вы не планировали продвигать. Второй сигнал — одна и та же статья открывается по нескольким адресам, а в исходном коде у них не совпадает канонический URL.

Что проверить в первую очередь

  • страницы тегов и рубрик;
  • архивы автора;
  • страницы пагинации /page/2/, /page/3/ и дальше;
  • URL с параметрами сортировки, фильтров, UTM и поиском по сайту;
  • доступность одной и той же страницы по www и без www;
  • дубли из-за HTTP и HTTPS;
  • страницы вложений медиафайлов, если они не нужны в поиске.

Если сайт уже давно работает, полезно посмотреть не только Search Console, но и логи сервера или отчёты краулера вроде Screaming Frog. Там видно, какие адреса реально обходятся ботом, а не только попадают в индекс.

Диагностика: где именно WordPress создаёт дубли

У WordPress есть несколько типовых источников дублей. Самый частый — архивы таксономий. Например, один и тот же материал может быть доступен через рубрику, тег и архив автора. По содержанию это не всегда прямой дубль, но для поисковика такие страницы часто слишком похожи.

Ещё один источник — пагинация архивов. Страница рубрики /category/news/ и /category/news/page/2/ не должны быть одинаковыми по смыслу, но если на второй странице почти нет уникального контента, она может выглядеть как слабый дубль.

Наконец, отдельная проблема — параметры в URL. Если у вас есть фильтры, сортировка или поиск, WordPress и плагины могут генерировать комбинации адресов, которые не стоит индексировать.

Мини-проверка вручную

<!-- Откройте исходный код страницы и найдите canonical -->
<link rel="canonical" href="https://example.com/sample-page/" />

Если canonical указывает не на ту страницу, которую вы ожидаете, это уже повод искать конфликт темы, SEO-плагина или кастомного кода.

Пошаговое решение: что закрывать, а что оставлять

Здесь важно не смешивать задачи. noindex и canonical решают разные проблемы. Canonical подсказывает поисковику предпочтительный URL, а noindex говорит не включать страницу в индекс. Для дублей обычно сначала выбирают канонический адрес, а потом точечно закрывают страницы, которые не должны ранжироваться сами по себе.

Шаг 1. Приведите сайт к одному основному варианту URL

Проверьте, что сайт открывается только в одной версии: https, с нужным www или без него, со слешем на конце или без него. Это базовая настройка, но именно она часто создаёт дубли на уровне всего сайта.

Для WordPress это обычно решается в настройках Адрес WordPress (URL) и Адрес сайта (URL), а также на уровне редиректов веб-сервера. Если редиректов нет, поисковик может видеть разные версии одной и той же страницы как отдельные URL.

Шаг 2. Закройте архивы, которые не несут ценности

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

Для этого можно использовать SEO-плагин, который умеет управлять мета-robots на уровне архивов. Если нужен более широкий набор задач по чистке дублей и технической оптимизации, уместно посмотреть в сторону Clearfy Pro: https://wpshop.ru/plugins/clearfy. Но даже с плагином логику закрытия нужно продумывать вручную.

Шаг 3. Настройте canonical для страниц с похожим содержимым

Canonical особенно полезен для страниц пагинации, сортировки и фильтров, если вы не хотите полностью закрывать их от индексации. Он помогает поисковику понять, какая версия основная.

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

Шаг 4. Закройте ненужные страницы через noindex

Страницы, которые не должны ранжироваться сами по себе, логично пометить как noindex, follow. Это часто подходит для:

  • страниц поиска по сайту;
  • архивов автора на небольших проектах;
  • служебных страниц;
  • тонких теговых архивов;
  • страниц пагинации, если они не дают самостоятельной ценности.

Но с пагинацией нужно быть аккуратным: если у вас большой каталог материалов и вторая-третья страницы реально помогают находить контент, полное закрытие может ухудшить обход сайта. Здесь нет универсального ответа — решение зависит от структуры и объёма контента.

Пример кода: убрать архивы автора и вложений из индекса

Если вы не хотите использовать плагин для этой части, можно задать мета-robots программно. Ниже — пример для functions.php или небольшого mu-plugin. Он не отключает сами страницы, а только меняет индексацию.

<?php
add_filter( 'wp_robots', function( array $robots ) {
    if ( is_author() || is_attachment() ) {
        $robots['noindex'] = true;
        $robots['follow']   = true;
    }

    return $robots;
} );

Этот вариант работает на уровне стандартного API WordPress и не требует выдуманных хуков. После внедрения проверьте исходный код страницы: в блоке robots должен появиться нужный набор директив.

Пример кода: задать canonical для страницы с параметрами

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

<?php
add_filter( 'get_canonical_url', function( $canonical, $post ) {
    if ( ! $post instanceof WP_Post ) {
        return $canonical;
    }

    if ( is_singular( 'post' ) ) {
        return get_permalink( $post );
    }

    return $canonical;
}, 10, 2 );

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

Сравнение подходов: плагин, код или серверный редирект

ПодходКогда подходитМинус
SEO-плагинНужно быстро закрыть архивы, теги, автора, пагинациюЛегко переборщить с noindex и скрыть нужные страницы
Код в теме или mu-pluginНужна точечная логика для конкретного типа страницТребует тестирования после обновлений темы и плагинов
Редирект на сервереНужно убрать технические дубли URL, www/без www, http/httpsНе решает вопрос с тонкими архивами и canonical

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

После изменений не ограничивайтесь визуальной проверкой. Откройте несколько проблемных URL и посмотрите исходный код: canonical должен указывать на нужный адрес, а в robots должны быть те директивы, которые вы задали. Затем проверьте ответ сервера и цепочки редиректов.

  • страница открывается по одному основному URL;
  • дубли с параметрами не попадают в индекс;
  • в Search Console уменьшается число страниц с пометкой о дублировании;
  • в краулере canonical совпадает с ожидаемым;
  • страницы, которые должны остаться в индексе, не получили случайный noindex.

Если у вас есть доступ к терминалу, полезно проверить заголовки ответа:

curl -I https://example.com/sample-page/

Смотрите на 301/200, rel=canonical в HTML и отсутствие лишних вариантов одного и того же адреса.

Частые ошибки и как их исправить

Ставят noindex на всё подряд

Так часто делают после первых проблем с дублями, но в итоге из индекса исчезают рубрики, важные архивы и даже полезные статьи. Исправление простое: верните индексируемость там, где страница даёт самостоятельную ценность, и оставьте noindex только для служебных и слабых страниц.

Меняют canonical, но не убирают технические дубли

Canonical — это подсказка, а не жёсткий запрет. Если у вас одновременно доступны http и https, или сайт живёт на двух версиях домена, сначала нужен редирект, а уже потом canonical.

Закрывают страницы пагинации без проверки структуры сайта

На небольшом блоге это может быть нормально, а на большом каталоге материалов — уже нет. Если вторая и третья страницы архивов реально помогают обходу и навигации, не спешите их закрывать без анализа логов и Search Console.

Путают архивы тегов и рубрик

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

Практические советы по безопасности и производительности

Любые правки в индексации лучше делать через дочернюю тему или mu-plugin, а не напрямую в родительской теме. Тогда обновление не затрёт изменения. Перед массовыми правками сохраните резервную копию базы и файлов, особенно если планируете менять правила редиректов и robots.

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

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

Как отключить XML-RPC в WordPress без срыва Jetpack и внешних сервисов
19.08.2026
Как отключить emoji в WordPress и убрать лишние скрипты из head
19.08.2026
Как настроить noindex для страниц поиска и фильтров в WordPress
19.08.2026
Как отключить XML-RPC в WordPress без поломки внешних сервисов
15.08.2026
Как убрать дубли страниц в WordPress: canonical, noindex и пагинация без потери индексации
15.08.2026