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