Как убрать дубли страниц в WordPress через canonical и noindex

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

Самый рабочий подход здесь — не пытаться «запретить всё подряд», а аккуратно разделить страницы на две группы: те, которые должны индексироваться, и те, которые нужны пользователю, но не должны конкурировать в поиске. Для этого обычно хватает canonical и noindex, но применять их нужно точечно.

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

Сначала проверьте не симптомы, а источники. Если в поиске всплывают одинаковые страницы с разными адресами, это уже повод смотреть на каноникал и мета-robots. В WordPress дубли чаще всего создают:

  • архивы категорий и тегов с одинаковыми сниппетами;
  • страницы автора на сайтах с одним редактором;
  • страницы пагинации архивов;
  • URL с параметрами вроде ?utm_, ?replytocom=, ?sort=;
  • внутренний поиск по сайту;
  • служебные страницы, которые не несут самостоятельной ценности.

Быстрая диагностика в Search Console и в браузере

Откройте несколько подозрительных URL и сравните исходный код. Вам нужно увидеть две вещи: какой адрес указан в rel="canonical" и есть ли noindex в мета-тегах. Если canonical указывает на другой URL, а страница всё равно индексируется, значит проблема не решена полностью.

Полезно проверить и HTTP-ответ, особенно если у вас кэш или SEO-плагин. Иногда canonical в HTML есть, но кэш отдаёт старую версию страницы.

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

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

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

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

СценарийЧто делатьПочему
Пагинация архивовОбычно canonical на саму страницу пагинации, без noindexСтраницы нужны для обхода и навигации
Внутренний поискnoindex, followКонтент не уникален и зависит от запроса
Страницы автора на блоге с одним авторомnoindex или отключение архива автораЧасто дублируют архивы записей
URL с UTM и служебными параметрамиcanonical на чистый URL, иногда редиректНе плодить копии одной страницы

Если у вас SEO-плагин уже умеет управлять мета-тегами, не дублируйте его настройками в теме. Два источника canonical на одной странице — частая причина хаоса.

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

1. Закройте внутренний поиск и служебные страницы

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

add_action('wp_head', function () {
    if (is_search()) {
        echo '<meta name="robots" content="noindex,follow" />' . "\n";
    }
});

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

2. Уберите дубли от параметров URL через canonical

Если одна и та же статья открывается с параметрами, canonical должен указывать на чистый адрес без параметров. Это особенно полезно для UTM-меток, сортировки и некоторых AJAX-сценариев.

add_filter('wpseo_canonical', function ($canonical) {
    if (is_singular()) {
        return get_permalink();
    }
    return $canonical;
});

Этот пример относится к Yoast SEO. Если у вас другой SEO-плагин, используйте его штатный фильтр или настройку. Не пытайтесь одновременно переопределять canonical в теме и в плагине.

3. Отключите архивы, которые не нужны сайту

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

add_action('init', function () {
    if (get_option('users_can_register') === '0') {
        // Пример логики: архив автора можно закрывать на сайтах с одним автором.
    }
});

Здесь важнее не сам код, а логика: не плодите архивы ради «полноты». Если раздел не приносит трафик и дублирует контент, он должен быть либо полезным, либо закрытым.

4. Проверьте пагинацию

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

Проверьте, что у страниц /page/2/, /page/3/ и так далее есть собственный URL и корректный canonical. Если SEO-плагин подменяет canonical на первую страницу архива, это надо исправлять настройкой, а не костылём в шаблоне.

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

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

  • у служебных страниц есть noindex;
  • у дублей canonical указывает на основную версию;
  • страницы с параметрами не создают отдельные индексируемые копии;
  • в исходном коде нет двух разных canonical;
  • кэш не отдаёт старую версию мета-тегов.

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

curl -s https://example.com/search/?s=test | grep -iE 'robots|canonical'

В Search Console изменения обычно видны не мгновенно. Но если canonical и robots настроены правильно, новые обходы начинают учитывать это довольно быстро. Главное — не менять правила каждую неделю.

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

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

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

Оставляют конфликтующие настройки в плагине и теме

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

Путают canonical и редирект

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

Закрывают параметры в robots.txt

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

Что делать, если нужен более управляемый подход

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

Практический чек-лист перед публикацией

  • Проверить, какие URL реально дублируют контент.
  • Определить, что закрывается через noindex, а что через canonical.
  • Убедиться, что SEO-плагин и тема не выводят одинаковые теги.
  • Очистить кэш сайта и CDN.
  • Проверить исходный код нескольких страниц вручную.
  • Сравнить поведение в Search Console после повторного обхода.

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

Как избежать проблем с неправильным выполнением AJAX в WordPress
18.01.2026
Автоматическое отключение оплаты в WooCommerce при отмене заказа
03.07.2026
Автоматическое удаление старых черновиков в WordPress: как настроить и оптимизировать
12.04.2026
Автоматическое отслеживание изменений остатков товаров в WooCommerce
04.05.2026
Как использовать хуки для расширения функционала WordPress
18.12.2025