WPTour

Как настроить canonical URL в WordPress для борьбы с дублями страниц

Если одна и та же страница в WordPress открывается по нескольким адресам, поисковики могут считать это дублями и разделять между ними вес. На практике это случается из-за параметров в URL, страниц пагинации, архивов, версий со слэшем и без него, а иногда и из-за особенностей темы или плагинов. Решение здесь не в том, чтобы «запретить всё подряд», а в том, чтобы явно указать основную версию страницы через canonical URL.

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

Когда canonical URL действительно нужен

В WordPress канонический адрес особенно полезен, если у вас есть:

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

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

Как WordPress формирует canonical по умолчанию

В современных версиях WordPress для записей, страниц, рубрик и многих архивов canonical обычно добавляется автоматически. За это отвечает функция rel_canonical(), которая выводит тег <link rel="canonical" ...> в <head> страницы.

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

  • тема вручную меняет шаблон header.php и убирает стандартные хуки WordPress;
  • SEO-плагин подменяет canonical своим правилом;
  • на сайте есть нестандартные типы записей или фильтры, для которых нужно задать отдельный канонический адрес;
  • одна и та же страница доступна по разным URL, а WordPress выбирает не тот вариант, который вам нужен.

Проверка: есть ли canonical на странице и какой именно

Перед настройкой стоит посмотреть, что уже отдает сайт. Откройте нужную страницу в браузере, затем посмотрите исходный код и найдите строку с rel="canonical". В норме вы увидите что-то вроде:

<link rel="canonical" href="https://example.com/page/" />

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

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

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

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

Как задать canonical URL в WordPress вручную

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

Ниже пример для functions.php дочерней темы или собственного мини-плагина. Он задает canonical для конкретной страницы по ее ID:

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

    if ( (int) $post->ID === 123 ) {
        return 'https://example.com/osnovnaya-stranica/';
    }

    return $canonical;
}, 10, 2 );

Замените 123 на ID нужной записи, а URL — на канонический адрес. Такой подход подходит, когда одна конкретная страница доступна по нескольким вариантам и вы хотите жестко закрепить основной URL.

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

Если используется SEO-плагин, проверьте его настройки раньше кода

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

Что нужно проверить:

  • не отключен ли canonical в настройках плагина;
  • не создает ли плагин отдельный canonical для архивов, который конфликтует с вашим ожиданием;
  • не переопределяет ли тема вывод плагина в <head>;
  • не стоит ли на странице несколько SEO-плагинов одновременно — это частая причина дублирующихся canonical.

Если у вас уже есть SEO-плагин, сначала добейтесь правильного canonical через его интерфейс. Код нужен только тогда, когда стандартных настроек не хватает.

Что делать с дублями, которые canonical не решает

Canonical помогает подсказать поисковику основную версию, но не отменяет необходимость убрать технические дубли, если они мешают пользователям или создают лишнюю нагрузку на сайт. Например, если одна и та же страница доступна по http и https, с www и без www, canonical здесь должен дополнять, а не заменять редирект.

Для таких случаев правильнее:

  • настроить 301-редирект на единственный основной вариант домена и протокола;
  • убрать лишние версии URL из внутренней перелинковки;
  • не индексировать служебные страницы, которые не должны конкурировать с основным контентом;
  • проверить, не создают ли дубли фильтры, сортировки и параметры в URL.

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

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

После изменения canonical откройте страницу и снова посмотрите исходный код. В теге link rel="canonical" должен быть указан нужный URL, без лишних параметров и без альтернативной версии домена.

Дальше проверьте три вещи:

  1. страница открывается по основному адресу без цепочки редиректов;
  2. в исходном коде только один canonical;
  3. внутренние ссылки на сайте ведут на ту же каноническую версию, а не на дубль.

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

Типичные ошибки при настройке canonical

Самая частая ошибка — указывать в canonical URL, который сам редиректит на другой адрес. Поисковик это обычно понимает, но такая схема лишняя и часто говорит о том, что на сайте не вычищена структура ссылок.

Еще одна проблема — несколько canonical на одной странице. Это бывает, когда их выводит и тема, и SEO-плагин, или когда код добавлен вручную без проверки существующего тега. В HTML должен быть один основной canonical.

Не стоит ставить canonical на главную страницу, если речь идет о записи или категории. Канонический адрес должен соответствовать реальной сущности страницы, а не просто «любому похожему URL».

И наконец, canonical не нужно использовать как замену редиректам для переезда сайта, смены домена или исправления http/https. Для этого нужен именно 301-редирект, а canonical — это подсказка для поисковика, а не жесткое правило для браузера.

Когда лучше править шаблон, а когда хватит плагина

СитуацияЧто делать
Нужно исправить canonical у одной страницыПроще всего задать его через фильтр или настройки SEO-плагина
Проблема на многих записях одного типаЛучше искать причину в шаблоне, структуре ссылок или правилах плагина
Canonical отсутствует вообщеПроверить тему на удаление стандартных хуков WordPress и наличие SEO-плагина
Есть дубли домена, протокола или слэшаСначала настроить 301-редиректы, canonical оставить как дополнительный сигнал

Если вам нужно не только задать canonical, но и системно убрать дубли, в WordPress удобно использовать SEO-плагины с управлением техническими настройками. Например, Clearfy Pro из экосистемы WPShop помогает закрывать часть типовых дублей и упрощает работу с SEO-настройками сайта: https://wpshop.ru/plugins/clearfy?utm_source=wptour.ru&utm_medium=article&utm_campaign=canonical-url-v-wordpress

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

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше