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

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

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

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

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

Типичные источники дублей в WordPress

  • страницы с параметрами в URL: ?utm_, ?replytocom, фильтры, сортировки;
  • архивы рубрик и тегов, где повторяется текст записи;
  • страницы пагинации архивов;
  • версии с и без слэша, http и https, www и без www;
  • страницы автора и дата-архивы, если они дублируют контент записей;
  • одна и та же запись в нескольких таксономиях с одинаковыми сниппетами.

Что смотреть в диагностике

Откройте в поиске Google Search Console отчёт по страницам и проверьте, какие URL помечены как дубли, Google выбрал другой канонический URL. Затем вручную сравните:

  • view-source: у проблемных URL — есть ли корректный rel="canonical";
  • код ответа сервера — не отдаёт ли дубль 200 OK вместо редиректа;
  • robots meta — не закрыта ли нужная страница случайно;
  • одинаков ли контент на нескольких адресах.

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

Что лучше: canonical, noindex или 301 редирект

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

ПодходКогда использоватьПлюсМинус
canonicalПохожие версии одной страницы, параметры, сортировкиСигнализирует поисковику основную версиюНе убирает дубль физически
noindexАрхивы, служебные страницы, которые не нужны в поискеПрямо исключает из индексаСтраница остаётся в обходе робота
301 redirectОдинаковые URL, старые адреса, дубли протокола и доменаОбъединяет вес и убирает дубльНужно аккуратно проверять цепочки редиректов

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

Пошаговое решение: как убрать дубли в WordPress

Шаг 1. Нормализуйте основной URL сайта

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

Если у вас старый сайт с разными вариантами домена, настройте 301-редирект на уровне сервера или через wp-config.php не пытайтесь это лечить. WordPress должен работать уже на одном каноническом адресе.

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

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

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

    return $robots;
});

Этот вариант не трогает записи и страницы. Он работает через стандартный фильтр wp_robots, который WordPress использует для формирования meta robots.

Шаг 3. Добавьте canonical для параметрических URL

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

<?php
add_filter('wp_get_canonical_url', function ($canonical, $post) {
    if (is_singular() && !empty($_GET)) {
        return get_permalink($post);
    }

    return $canonical;
}, 10, 2);

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

Шаг 4. Уберите дубли через редирект там, где URL не должен существовать

Если у вас есть старые адреса, которые больше не нужны, не закрывайте их noindex. Делайте 301. Это особенно важно после смены структуры ссылок или переноса сайта.

<?php
add_action('template_redirect', function () {
    if (isset($_GET['replytocom'])) {
        $url = remove_query_arg('replytocom');
        wp_safe_redirect($url, 301);
        exit;
    }
});

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

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

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

  • Откройте проблемный URL и убедитесь, что он отдаёт нужный код ответа: 200 для основной страницы, 301 для дубля.
  • Посмотрите исходный код страницы и проверьте rel="canonical".
  • Проверьте meta robots: нужные архивы должны быть noindex,follow, а не случайно noindex,nofollow.
  • В Search Console отправьте URL на повторную проверку и отслеживайте, как меняется статус канонической страницы.
  • Сравните количество страниц с параметрами в индексе до и после, но не ждите мгновенного обновления.

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

curl -I https://example.com/post-name/?replytocom=12

В ответе должен быть 301 и новый Location без параметра. Если вместо этого приходит 200, редирект не сработал.

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

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

Это частая ошибка при попытке «почистить индекс». В результате из поиска исчезают полезные рубрики, страницы авторов или даже записи, если фильтр написан слишком широко. Проверяйте условия: is_tag() и is_author() — это не is_singular().

Canonical указывает на несуществующий или редиректящий URL

Если canonical ведёт на адрес с 301 или 404, поисковик может проигнорировать его. Канонический URL должен быть живым, конечным и без цепочки редиректов.

Редирект создаёт петлю

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

Параметры удаляют без разбора

Не все query string одинаково вредны. UTM-метки обычно не нужны в canonical, но параметры поиска, фильтрации или сортировки могут быть важны для пользователя. Их нельзя просто вырезать глобальным правилом.

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

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

Ещё один полезный момент: не плодите несколько SEO-решений одновременно. Если у вас уже стоит плагин, который управляет canonical и robots, сначала проверьте его настройки. Два источника meta robots на одной странице — это источник конфликтов, а не оптимизации.

Для сайтов с большим количеством архивов и дублей имеет смысл периодически проверять:

  • страницы с параметрами в индексе;
  • архивы тегов с пустым или почти одинаковым контентом;
  • дубли главной из-за неправильной настройки домена;
  • старые URL после миграции структуры ссылок.

Если нужен более широкий набор инструментов для чистки дублей, служебных архивов и технических настроек, можно посмотреть в сторону плагинов класса Clearfy Pro, но даже в этом случае сначала стоит понять, что именно вы закрываете и зачем. Автоматическая чистка без диагностики часто даёт обратный эффект.

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

⭐⭐⭐⭐⭐