Как закрыть дубли страниц с помощью canonical и noindex в WordPress

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

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

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

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

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

  • поиск в Google по site:example.com и сравнение URL одной и той же статьи;
  • страницы тегов, авторов, дат и архивов рубрик;
  • пагинацию архивов: /page/2/, /page/3/;
  • URL с параметрами: ?orderby=, ?utm_, ?replytocom=;
  • наличие разных canonical на одинаковых страницах;
  • дубли из-за HTTP/HTTPS, www/non-www и слэша на конце.

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

Что закрывать через noindex, а что оставлять с canonical

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

СценарийЧто делатьКомментарий
Параметры сортировки и фильтровnoindex,follow или canonical на чистый URLЗависит от того, нужны ли такие страницы в поиске
Пагинация архивовОбычно canonical на саму страницу пагинацииНе стоит массово склеивать все страницы в первую
Теги, авторы, датыЧасто noindexЕсли они не несут самостоятельной ценности
Дубли из-за UTMCanonical на чистый URLПараметры не должны плодить индексацию
AMP/служебные версииCanonical на основную страницуТолько если такие версии реально используются

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

Пошаговое решение: настраиваем canonical и noindex без лишних плагинов

Самый надежный вариант — сначала проверить, что уже делает тема или SEO-плагин, а потом добавить точечные правки. В WordPress часто проблема не в отсутствии мета-тега, а в том, что два разных механизма пишут разные canonical в один и тот же шаблон.

Шаг 1. Проверьте, не генерирует ли SEO-плагин нужные теги уже сейчас

Откройте исходный код страницы и найдите rel="canonical" и meta name="robots". Если они уже есть, не дублируйте их в теме. В Yoast, Rank Math и похожих плагинах сначала настраивают шаблоны архивов и таксономий, а код добавляют только для исключений.

Шаг 2. Закройте ненужные архивы через фильтр

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

add_filter('wp_robots', function ($robots) {
    if (is_tag() || is_author() || is_date()) {
        $robots['noindex'] = true;
        $robots['follow'] = true;
    }

    return $robots;
});

Этот способ работает на уровне WordPress и не требует ручной правки шаблонов header.php. Но если тема уже выводит собственный robots meta, проверьте, чтобы не было двух одинаковых блоков.

Шаг 3. Уберите дубли от параметров URL

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

add_filter('get_canonical_url', function ($canonical, $post) {
    if (is_singular() && !empty($canonical)) {
        $canonical = remove_query_arg(array('utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'), $canonical);
    }

    return $canonical;
}, 10, 2);

Здесь важно не пытаться «очистить» вообще все параметры без разбора. Некоторые плагины и формы используют служебные query args, и их удаление может сломать логику страницы. Лучше убирать только маркетинговые метки и очевидные мусорные параметры.

Шаг 4. Для страниц, которые не должны индексироваться, отдайте 410 или 404, если они реально лишние

Если дубли появились из-за старых URL, которые больше не нужны, noindex не всегда лучший выбор. Если страница устарела и не имеет замены, корректнее вернуть 410 Gone или 404 Not Found. Это быстрее убирает мусор из индекса и не держит поисковик за ненужный URL.

Пример для точечного удаления старого пути:

add_action('template_redirect', function () {
    if (is_page('old-landing')) {
        status_header(410);
        nocache_headers();
        exit;
    }
});

Такой код стоит использовать только для реально удаленных страниц. Не превращайте в 410 рабочие URL, которые еще получают трафик или ссылки.

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

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

  • откройте страницу в браузере и проверьте исходный код на наличие одного canonical;
  • убедитесь, что у закрытых архивов есть noindex,follow или нужный вам вариант;
  • проверьте, что пагинация не склеена в первую страницу без необходимости;
  • прогоните URL через «Проверку URL» в Google Search Console;
  • посмотрите, не появились ли дубли canonical в HTML после обновления темы или плагина;
  • сравните индексируемые URL до и после через site: и отчет по страницам.

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

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

Два canonical на одной странице

Обычно это конфликт темы и SEO-плагина. В исходнике будет два тега rel="canonical". Оставьте только один источник правды: либо плагин, либо тема. Если тема выводит canonical вручную, уберите этот код из шаблона.

Noindex на страницах, которые должны ранжироваться

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

Склейка пагинации в первую страницу

Иногда пытаются ставить canonical со всех страниц архива на первую. Для длинных архивов это спорное решение: страницы 2, 3, 4 могут содержать уникальные ссылки и помогать обходу сайта. Если у вас нет сильной причины склеивать пагинацию, лучше оставить самоканоникал.

Удаление всех параметров без исключения

Если бездумно вырезать query string, можно сломать поиск по сайту, фильтры, подписку, сортировку или формы. Безопаснее удалять только UTM и явно мусорные параметры, а не все подряд.

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

Чем меньше лишней логики в теме, тем проще сопровождать сайт. Если вы уже используете SEO-плагин, не дублируйте его функции в functions.php без необходимости. Это снижает риск конфликтов после обновлений.

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

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

Когда лучше не использовать noindex

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

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

Как отключить XML sitemap в WordPress из robots.txt и не потерять индексацию
02.09.2026
Как исключить строки из sitemap в WordPress и не сломать индексацию
20.08.2026
Как отключить открытые XML feed в WordPress и убрать лишнюю индексацию
27.08.2026
Как отключить XML-RPC в WordPress без поломки входов и синхронизации
17.08.2026
Как отключить архив авторов в WordPress без потери индексации
24.08.2026