Если у одной и той же страницы в WordPress есть несколько адресов, поисковик может индексировать не ту версию: с параметрами, со слэшем и без него, с пагинацией, с UTM-метками или из-за особенностей темы и плагинов. В таких случаях помогает canonical — указание основной, предпочтительной версии страницы. Это не магическая кнопка против всех дублей, но в большинстве типичных сценариев именно она снижает риск каннибализации и помогает поисковику понять, какой URL считать главным.
Сразу важный момент: canonical не заменяет нормальную структуру сайта. Если дубли появляются из-за неправильных редиректов, одинаковых архивов, параметров фильтрации или технических ошибок шаблона, сначала нужно убрать причину, а уже потом настраивать канонический адрес.
Что именно делает canonical и когда он нужен
В HTML-странице canonical задаётся через тег <link rel="canonical" href="..."> в <head>. Он подсказывает поисковым системам, какой URL считать основной версией контента. Если на сайте есть несколько адресов с одинаковым или почти одинаковым содержимым, canonical помогает объединить сигналы в пользу одной страницы.
В WordPress это особенно актуально для таких ситуаций:
- одна и та же запись открывается с разными параметрами в URL;
- страница доступна по нескольким путям из-за настроек темы или плагина;
- архивы, пагинация и сортировки создают похожие страницы;
- на сайте есть версии с www и без www, со слэшем и без него, если это не приведено к одному формату редиректами;
- внутренние ссылки ведут на разные варианты одного адреса.
Canonical полезен именно как сигнал для поисковика. Он не гарантирует, что робот всегда выберет нужный URL, но при корректной настройке сильно снижает путаницу.
Сначала проверьте, нет ли проблемы в самих URL
Перед настройкой canonical стоит посмотреть, действительно ли у страницы есть несколько доступных адресов. Если проблема в сервере или конфигурации WordPress, canonical будет лишь временной подстраховкой.
Проверьте базовые вещи:
- в Настройки → Постоянные ссылки структура URL должна быть задана один раз и не меняться без необходимости;
- страница должна открываться по одному основному адресу, а остальные варианты — отдавать редирект 301;
- если сайт доступен и с
www, и без него, выберите один вариант и приведите второй к нему редиректом; - не должно быть двух одинаковых страниц, созданных вручную в разных разделах сайта.
Если у вас есть доступ к серверу или панели хостинга, полезно проверить ответ URL через браузер или инструменты разработчика. Для поисковика важен не только canonical, но и то, что сам URL не плодит лишние копии.
Где WordPress задаёт canonical по умолчанию
В актуальных версиях WordPress canonical для записей, страниц, рубрик и большинства архивов формируется автоматически. Обычно это делает сам движок через стандартные функции ядра, и в простом проекте этого достаточно. Поэтому в первую очередь нужно понять, не переопределяет ли canonical тема или SEO-плагин.
На практике конфликт чаще всего возникает в одном из трёх мест:
- SEO-плагин выводит свой canonical поверх стандартного;
- тема вручную добавляет тег в
<head>; - кастомный шаблон или хук выводит некорректный URL, например без учёта текущей страницы архива.
Если canonical уже есть в коде страницы, не добавляйте второй такой же тег. Дублирующийся rel="canonical" — частая ошибка, из-за которой поисковик может игнорировать оба варианта.
Как задать canonical в WordPress вручную
Если стандартного canonical недостаточно или нужно явно указать основную версию для конкретного шаблона, это делают через хук wp_head. Такой способ подходит для темы или дочерней темы, когда вы контролируете вывод HTML.
Перед изменениями сделайте резервную копию файлов темы или работайте в дочерней теме. Ошибка в шаблоне может сломать вывод сайта, а неверный canonical — испортить индексацию.
Ниже пример, который выводит canonical для текущей записи или страницы. Он полезен, если в теме по какой-то причине нет корректного тега или его нужно переопределить:
add_action( 'wp_head', function () {
if ( is_singular() ) {
echo '<link rel="canonical" href="' . esc_url( get_permalink() ) . '" />' . "\n";
}
}, 1 );Здесь get_permalink() берёт основной URL записи или страницы, а esc_url() безопасно выводит адрес в HTML. Приоритет 1 помогает вывести тег раньше, чем многие плагины, но если SEO-плагин тоже формирует canonical, лучше не дублировать логику, а отключить лишний вывод в одном месте.
Если нужно задать canonical для конкретной страницы вручную, а не для всех, можно использовать условие по ID или по шаблону. Например, для одной проблемной страницы:
add_action( 'wp_head', function () {
if ( is_page( 123 ) ) {
echo '<link rel="canonical" href="https://example.com/osnovnaya-stranitsa/" />' . "\n";
}
}, 1 );Замените 123 на ID страницы, а URL — на канонический адрес. Такой вариант применяют точечно, когда одна и та же страница доступна по нескольким путям или когда нужно жёстко закрепить основную версию.
Если canonical задаёт SEO-плагин
На большинстве сайтов canonical удобнее настраивать не кодом, а через SEO-плагин. У разных решений интерфейс отличается, но принцип один: для записи, страницы, рубрики или шаблона указывается предпочтительный URL либо плагин сам берёт постоянную ссылку текущего объекта.
Что важно проверить в плагине:
- не отключён ли вывод canonical вообще;
- не задан ли вручную другой URL в настройках конкретной записи;
- не создаёт ли плагин отдельный canonical для пагинации, архивов и меток;
- не конфликтует ли он с темой, которая тоже печатает тег в
<head>.
Если у вас уже стоит SEO-плагин, не добавляйте ручной код без необходимости. Два источника canonical на одной странице — это лишний риск. Сначала найдите, кто именно выводит тег, и оставьте один источник правды.
Как выбрать правильный canonical для разных типов дублей
Не все дубли одинаковы, и canonical нужно ставить с учётом сценария. Для одной и той же записи обычно указывают её постоянный URL. Для архивов и страниц пагинации логика уже другая: canonical должен соответствовать той версии, которую вы хотите считать основной.
| Ситуация | Что указывать в canonical | Комментарий |
|---|---|---|
| Одна запись открывается с параметрами | Чистый URL записи без параметров | Параметры не должны становиться основной версией |
| Две одинаковые страницы из-за разных путей | Один выбранный основной адрес | Лучше дополнить 301-редиректом |
| Пагинация архива | Обычно сам URL текущей страницы пагинации | Не подменяйте всё на первую страницу без понимания последствий |
| Страница с фильтрами или сортировкой | Основной URL раздела без параметров | Если фильтр нужен для индексации, canonical может быть другим |
Самая частая ошибка — ставить canonical на первую страницу архива для всех страниц пагинации. Это не всегда правильно: если у пагинированных страниц есть самостоятельная ценность, поисковику нужно показать их собственный адрес. Здесь решение зависит от структуры сайта и того, какие страницы вы хотите видеть в поиске.
Как проверить, что canonical работает
После настройки откройте страницу в браузере и посмотрите исходный код. В <head> должен быть один тег canonical, и его href должен вести на нужный адрес. Если тегов два или больше, настройку нужно исправлять.
Дальше проверьте:
- открывается ли страница по основному URL без лишних параметров;
- нет ли 301-редиректа на другой адрес, который конфликтует с canonical;
- совпадает ли canonical с тем URL, который вы хотите видеть в индексе;
- не меняется ли тег на мобильной версии или в кэше.
Если используете инструменты для проверки индексации, учитывайте, что поисковик может не сразу принять новый canonical. После изменения нужно время на переобход и переоценку страниц.
Что не стоит делать
Есть несколько типичных ошибок, которые сводят настройку к нулю:
- ставить canonical на несуществующий или закрытый от доступа URL;
- указывать в canonical страницу с редиректом;
- дублировать тег в теме и плагине одновременно;
- подменять canonical на главную страницу сайта без причины;
- оставлять несколько версий одного и того же адреса без 301-редиректа.
Canonical — это не замена нормальной архитектуре URL. Если дубли появляются регулярно, лучше сначала устранить источник: настроить редиректы, убрать лишние шаблоны, проверить генерацию ссылок в теме и плагинах. Тогда canonical будет работать как дополнительный сигнал, а не как костыль.
Если нужен более удобный контроль над техническими SEO-настройками WordPress, в том числе над дублями и служебными элементами, можно посмотреть Clearfy Pro. Но и в этом случае важно понимать, какой именно URL должен быть основным, иначе автоматизация не решит проблему выбора канонической версии за вас.