Rel="canonical" - полное руководство по атрибуту канонических адресов

Здравствуйте, друзья!

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

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

Принцип работы атрибута rel="canonical"

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

Rel="canonical" - это один из важнейших моментов в оптимизации любого сайта, который позволяет решить проблему дублированного контента. Особая нужда в его использовании появляется при использовании различных дижков для создания сайтов, таких как: WordPress, phpBB и других.

Различные движки помимо основных страниц генерируют еще и другие документы с точно таким же контентом, но выполняющие совершенно другие задачи, например:

  • версия страницы для печати;
  • мобильная версия статьи;
  • и любые другие страницы с таким же контентом, но с другими адресами.

Если взять сайт на WordPress, то при включенной функции древовидных комментариев доступна кнопка "Ответить" под каждым комментом.

По данной ссылке можно перейти и увидеть точно такую же страницу с таким же адресом URL, на конце которого будет приставка вида "replytocom".

Она делает адрес совершенно другим, а вот контент никуда не изменяется. Происходит явное дублирование контента, что очень плохо.

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

к содержанию ↑

Как прописывать rel="canonical"

На различных движках (например, WordPress) добавление атрибута rel="canonical" происходит в автоматическом режиме. Также атрибут добавляется с помощью различных SEo плагинов.

Если же хотим добавить canonical в ручном режиме, то в область <head> ресурса стоит добавить следующую строчку.

Данный строку нужно обязательно добавить в секцию шапки сайта, то есть между открывающим <head> и закрывающим тегом </head>. Иначе поисковые системы проигнорируют ваше указание в виде этого атрибута. Также стоит добавлять его на каждую страницу, которая не является главной и доступна по другому адресу.

Если взять в пример ситуацию выше с адресами страниц, создаваемые кнопками ответа на комментарии на WordPress, то в исходном коде каждой такой страницы можно видеть атрибут rel="canonical".

Как видим, канонический адрес указывает на основную страницу, когда исходный код я просматривал по адресу:

Такая страница благодаря атрибуту канонических адресов в индекс не попадет. Поисковики прекрасно примут во внимание ваше указание.

Рассмотрев основной принцип работы данного атрибута, можно перейти к следующему вопросу материала.к содержанию ↑

В каких случаях использовать?

  • Я рекомендовал бы прописывать его на каждой странице, чтобы поисковые роботы сразу понимали, какую станицу забирать в поисковую базу. Это особенно важно, когда вы точно знаете, что у вас на сайте происходит дублирование контента, которое происходит вследствие наличия множества одинаковых страниц. Тогда стоит на все страницы добавить атрибут canonical, чтобы указать главный URL. Опять же, в пример можно взять случай выше со страницами дублирования через ссылку "Ответить";
  • На ряду с добавлением канонического адреса в код страницы, хорошим способом предотвратить появление дублей страницы является 301 редирект, который будет перенаправлять поисковых роботов и реальных посетителей с любой дублированной страницы на ее основной адрес. Когда не возможно реализовать 301 редирект, нужно использовать rel="canonical";
  • В случае с интернет магазином, когда имеется несколько страниц одного товара, только с разными версиями продукта (например, отличие в цвете телефона). В такой ситуации rel="canonical" лучше прописать на всех страницах и указать в качестве главной лишь адрес на страницу одного продукта;
  • Если доступна версия страницы для печати, то с такой страницы также стоит проставить canonical на основную;
  • Когда сайт доступен только адресу домена, а также по адресу индексного файла index. Например, сайт доступен по домену index.ru, а также index.ru/index.html. В таком случае правильней всего будет прописать каноникал со второго адреса на первый;
  • В случае, когда на сайте интернет магазина имеется несколько страниц каталога товаров, то для google будет более приоритетным вариантом создание общей страницы для каждого раздела со всем списком товаров и указать ее, как основную. На этот счет нашел понятную картинку на другом СЕО блоге;
  • При использовании различных языковых версий документов стоит проставлять rel="canonical" на страницу с основным языком.

Теперь стоит рассмотреть основные ошибки, которые могут допускаться и их стоит избегать.

к содержанию ↑

Основные ошибки

  • Страница, на которую указываем с помощью rel="canonical" должна существовать и работать. Проверьте, чтобы она отдавала 200 код сервера. Хотя, канонический адрес может содержать и редирект. Тогда поисковая машина обработает код сервера и постарается взять в индекс новый документ. Но старайтесь делать все без лишних заморочек;
  • Убедитесь, что канонический адрес не закрыт от индексации для поисковых роботов;
  • Необходимо прописывать canonical только в секции <head> сайта. Никаких областей <body> и <footer>;
  • Важно, чтобы атрибут был прописан всего лишь 1 раз. Употребление канонического адреса более 1го раза приведет к игнорированию его со стороны поисковых систем;
  • Для серий страниц пагинации (постраничной навигации) rel="canonical" не должен вести со всех страниц на первую. Это не правильно. Такие страницы не являются дубликатами контента, поэтому стоит сделать так, чтобы на каждой странице пагинации каноникал вел на тот адрес, где он и проставлен;
  • Используйте только абсолютные ссылки (то есть полные адреса с доменным именем), чтобы предотвратить ошибки вследствие употребления относительных адресов.

Когда разобрали основные ошибки, которых стоит избегать и которые чаще всего употребляются, стоит упомянуть плагины WordPress и некоторые моменты работы с атрибутом rel="canonical" на том движке.

к содержанию ↑

Сanonical в плагинах WordPress

Начнем с одного из самых популярных решений на рынке - all in one seo pack. Плагин хорош и добавляет данный атрибут в код каждой страницы, удаляя при этом стандартный canonical, создаваемый средствами движка. Для этого стоит включить соответствующую настройку.

Существует 2 проблемы, которые могут препятствовать нормальной индексации сайта и помочь конкурентам насолить нам.

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

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

Вторым моментом является косяк, который я описывал в соответствующей статье (настройка all in one seo pack). Он может помочь нашим конкурентам добавить нежелательные страницы в индекс с помощью инструментов addurl в поисковый индекс. Данный косяк конечно же исправляется и хорошо, что средствами самого же плагина, активировав определенную настройку "No Pagination for Canonical URLs".

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

Вторым плагином на обозрении стоит Platinum seo pack. К страницам пагинации он относится с уважением. Проблема заключается лишь в дублировании rel="canonical". Просмотрев исходный код страницы, можно увидеть, что при включенной функции добавления атрибута, не убирается стандартный атрибут, выводимый движком.

Это одна из грубейших ошибок. Поэтому, если у вас случится такая ситуация, удалите стандартный canonical с помощью добавления следующего кода в файл шаблона functions.php.

Можно также предоставить возможность работать стандартному rel="canonical", который выводит сам WordPress. Тогда стоит просто отключить в плагине нужный чек-бокс.

Имеются еще и другие SEO плагины для WordPress, но пока спорные моменты я обнаружил в данных решениях. Я сейчас использую WordPress seo by yoast, который на порядок функциональней и позволяет более качественно оптимизировать сайт. Да и rel="canonical" в нем отлично работает без ошибок.

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

Пока.

С уважением, Константин Хмелев!

40 лет Победы51937Украина, Днепропетровская обл., г. Днепродзержинск,+38 093 338 11 41
Комментариев: 8
  • Здравствуйте, установил WordPress seo by yoast на сайт ....., но мне кажется что rel="canonical" прописался не правильно, как это можно исправить ?

    • Здравствуйте. Что именно вас пугает в его работе?

  • В моем случае данный тег ведет на главную страницу сайта, и выглядет вот так - , разве он не должен вести на страницы навигации ?

    • С какой радости он должен вести на страницы навигации? Главной является именно главная страница, если вы на ней в данный момент и находитесь. Тоже самое касается и страниц навигации. Каноникал будет указывать на них, если они будут главными и вы будете находиться на них. Причем тут навигация вообще к главной странице?

  • Спасибо.

  • 301 редирект вряд ли хороший выход, чтобы его советовать ставить.

    • Почему же...

  • Константин, большое спасибо за статью! Как убирал в head shortlink , oembed, json, заметил и два rel_canonical - один от движка, второй от Platinum SEO. Благодаря вашей статье и коду убрал один лишний rel_canonical от движка.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *