Если одна и та же страница в WordPress доступна по нескольким адресам, поисковик может воспринимать это как дубли. В таких случаях помогает canonical: он подсказывает, какой URL считать основным. Это не магическая кнопка, а техническая подсказка для поисковых систем, и работает она только если вы укажете её правильно и не будете конфликтовать с другими настройками сайта.
На практике canonical нужен, когда у страницы есть варианты с параметрами, со слешем и без него, с разными путями в архиве, с UTM-метками, сортировками, пагинацией или когда один и тот же материал открывается из нескольких разделов. Ниже разберём, как добавить canonical в WordPress, где его лучше не трогать вручную и как проверить результат.
Когда canonical действительно нужен
Сначала стоит понять, что именно вы хотите исправить. Canonical имеет смысл, если контент одинаковый или почти одинаковый, а различается только адрес. Например:
- страница открывается с параметрами вида
?utm_source=...или?sort=...; - один и тот же товар, запись или страница доступны по нескольким URL из-за структуры сайта;
- есть версии со слешем и без слеша, если сервер или настройки редиректов это допускают;
- печатная версия, фильтр, сортировка или пагинация создают альтернативные адреса;
- контент доступен из нескольких рубрик или архивов, но основной URL должен быть один.
Если страницы реально разные по содержанию, canonical не решит проблему. В таком случае лучше пересмотреть структуру, объединить материалы или закрыть лишние URL от индексации другим способом. Canonical не удаляет дубли из сайта и не запрещает их обходить, он только задаёт предпочтительный адрес для поиска.
Что WordPress делает сам и когда вмешиваться не нужно
В современных версиях WordPress и большинства нормальных тем на страницах уже выводится canonical-тег в <head>. Обычно это делает сам движок через стандартный механизм генерации заголовка страницы. Если тема не ломает разметку, для обычных записей, страниц и архивов отдельная настройка не требуется.
Проблемы начинаются, когда:
- тема или плагин выводят свой canonical и конфликтуют со стандартным;
- SEO-плагин генерирует canonical по своим правилам, а вы добавляете второй вручную;
- на сайте есть нестандартные шаблоны, где canonical отсутствует или указывает не туда;
- страница доступна по нескольким адресам, а canonical остаётся на одном из дублей.
Поэтому перед правками сначала посмотрите исходный код страницы и убедитесь, что canonical уже есть. Если он есть и ведёт на нужный URL, ничего добавлять не нужно.
Как добавить canonical в WordPress вручную
Ручной способ нужен, если вы делаете собственный шаблон, работаете с нестандартной страницей или хотите переопределить canonical для конкретного типа контента. Делать это лучше через дочернюю тему или небольшой кастомный плагин, а не правкой основной темы: после обновления изменения пропадут.
Для вывода canonical в <head> можно использовать хук wp_head. Перед этим убедитесь, что на странице не выводится второй canonical из темы или SEO-плагина. Иначе поисковик увидит дублирующиеся теги.
Пример для конкретной страницы по ID:
<?php
add_action( 'wp_head', function () {
if ( is_page( 42 ) ) {
echo '<link rel="canonical" href="https://example.com/main-page/" />' . "\n";
}
}, 1 );Здесь 42 — ID страницы в WordPress, а https://example.com/main-page/ — адрес, который вы хотите считать основным. Приоритет 1 помогает вывести тег раньше, но сам по себе он не решает конфликт, если другой canonical уже добавлен позже. В таком случае нужно убрать источник второго тега.
Если canonical нужен для шаблона записи или страницы определённого типа, условие можно изменить. Например, использовать is_single(), is_page() или проверку конкретного шаблона. Но не подставляйте canonical динамически без необходимости: чем проще правило, тем меньше риск ошибиться.
Как настроить canonical через SEO-плагин
Если на сайте уже стоит SEO-плагин, лучше использовать его настройки, а не писать свой код. Это безопаснее и проще поддерживать. Большинство популярных SEO-плагинов умеют задавать canonical для записей, страниц, таксономий и архивов автоматически, а для отдельных материалов позволяют переопределить адрес вручную.
Типичный сценарий такой:
- откройте редактирование нужной записи или страницы;
- найдите блок SEO-настроек плагина;
- проверьте поле canonical URL или аналогичную настройку;
- укажите основной адрес без лишних параметров;
- сохраните запись и проверьте исходный код страницы.
Если плагин уже сам формирует canonical правильно, не дублируйте его вручную в теме. Это частая ошибка: на странице появляется два одинаковых или разных canonical-тега, и поисковик получает противоречивый сигнал.
Если вы используете несколько SEO-инструментов одновременно, оставьте только один источник canonical. Например, не стоит одновременно включать генерацию canonical в теме, в SEO-плагине и в отдельном сниппет-плагине.
Как выбрать правильный canonical для дублей
Когда адресов несколько, canonical должен указывать на тот URL, который вы считаете основным для пользователя и поисковика. Обычно это чистый адрес без лишних параметров, с нормальной структурой и без технических хвостов.
Ориентируйтесь на такие правила:
- canonical должен вести на индексируемую страницу с кодом ответа 200;
- адрес в canonical должен быть абсолютным, а не относительным;
- не ставьте canonical на страницу, которая сама закрыта от индексации, если у вас нет чёткой причины;
- не указывайте canonical на нерелевантный URL ради экономии времени;
- не делайте цепочки canonical: A указывает на B, а B — на C.
Если у страницы есть пагинация, canonical обычно указывает на саму страницу пагинации, а не на первую страницу раздела. Иначе можно сломать логику обхода и запутать поисковик. Для фильтров и сортировок чаще всего canonical ведёт на основную версию без параметров, если параметры не меняют смысл страницы.
Как проверить, что canonical работает
После настройки откройте страницу в браузере и посмотрите исходный код. В HTML должен быть один тег вида:
<link rel="canonical" href="https://example.com/main-page/" />Проверьте три вещи:
- canonical присутствует только один раз;
- адрес в нём совпадает с основным URL;
- в нём нет параметров, если они не нужны.
Дальше откройте дубль страницы, например с параметром или альтернативным адресом, и убедитесь, что canonical указывает на ту же основную страницу. Если на дубле стоит canonical на самого себя, это не всегда ошибка: иногда так и должно быть. Но если вы хотели склеить варианты, а canonical остался на дубле, настройка не сработала.
Полезно также проверить ответ сервера и редиректы. Если старый адрес уже должен перенаправляться на новый, лучше использовать 301-редирект, а canonical оставить как дополнительную подсказку. Не стоит заменять редирект canonical-тегом: это разные механизмы, и они решают разные задачи.
Чего не стоит делать при настройке canonical
Самые неприятные ошибки обычно связаны не с самим тегом, а с его неправильным применением. Вот что я бы не делал на рабочем сайте без проверки:
- не ставил бы canonical на главную страницу для всех внутренних материалов;
- не указывал бы в canonical URL, который закрыт редиректом или отдаёт ошибку;
- не оставлял бы одновременно несколько canonical-тегов;
- не делал бы canonical на страницу с другим содержанием только потому, что она похожа;
- не путал бы canonical и noindex: это разные инструменты, и они не взаимозаменяемы.
Если сайт большой, сначала проверьте шаблоны, архивы и страницы с параметрами. Именно там чаще всего появляются дубли. На небольшом сайте обычно достаточно убедиться, что WordPress и тема не выводят лишний canonical, а для отдельных страниц при необходимости задать его вручную через SEO-плагин или код.
Если вам нужно не только задать canonical, но и системно убрать технические дубли на сайте, иногда удобнее использовать специализированный SEO-инструмент. Например, в Clearfy Pro есть функции, связанные с удалением дублей и чисткой лишней разметки: https://wpshop.ru/plugins/clearfy?utm_source=wpbuy.ru&utm_medium=article&utm_campaign=canonical-v-wordpress-dlya-borby-s-dublyami-stranits. Но даже в этом случае важно понимать, какой URL должен быть основным, иначе автоматизация не даст нужного результата.
В итоге рабочая схема простая: определяете основной адрес, проверяете, какой canonical уже выводится WordPress или плагином, убираете конфликты и только потом тестируете результат на дублях. Если canonical настроен аккуратно, поисковику проще понять, какую версию страницы индексировать, а риск разрастания дублей заметно снижается.