ДоменыХостинг и серверыSSL-сертификатыСайтыБезопасностьКрупному бизнесуБонусыБлогЕще

rel="alternate": как решить проблему дублированного контента

11 ноября 2022

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

Почему дублированный контент опасен и когда он бывает нужен

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

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

В двух случаях наличие дублированного контента оправдано:

  • Наличие нескольких языковых версий сайта с одинаковым контентом, но для разных стран или областей внутри одной страны, жители которых говорят на разных языках. Например, для разных провинций Канады, где говорят на английском и французском.
  • Наличие у сайта мобильной версии на поддомене, контент которой совпадает с содержимым основного сайта. Обычно адрес такой мобильной версии выглядит как https://m.site.com/, то есть отличается наличием «m.» в начале.

В таких случаях важно дать понять поисковым роботам, что это не созданный по ошибке дублированный контент, а версии контента, предназначенные для разных пользователей. Также поисковику нужно дать подсказку, какую именно версию страницы показывать конкретному пользователю. Для этого используется тег <link> с атрибутом rel="alternate". 

Как внедрить атрибут rel="alternate" на мультиязычном сайте

Допустим, компания продает свои товары в США и России. Для каждой из стран она может создать версию сайта на нужном языке. В этом случае пользователь из США увидит в выдаче поисковика сайт на английском языке, а пользователь из России — на русском. Владельцу сайта нужно знать, как указать языковые версии страниц правильно и как использовать атрибут hreflang для этой цели.

Пример: при попытке зайти на сайт Microsoft из России мы видим в поиске версию сайта на русском языке

Использовать связку атрибутов rel="alternate" и hreflang="x"

Давайте разберемся, что такое hreflang и зачем он нужен. Чтобы поисковик понял, какую версию страницы показать пользователю, необходимо прописать на странице код по такому образцу:

<link rel="alternate" hreflang="ru" href="https://site.com/ru/">

  • link rel="alternate" указывает на то, что у страницы есть альтернативная версия;
  • hreflang="ru" сообщает, что альтернативная страница — на русском языке;
  • href="https://site.com/ru/" показывает, по какой ссылке можно найти альтернативную страницу на русском языке.

Для каждого языка существует свой двухбуквенный код, который и подставляется в атрибут hreflang. Полный список кодов можно найти в «Википедии». Необходимо взять нужный код языка и подставить его в атрибут hreflang. Например, если альтернативная страница на немецком языке, атрибут примет вид hreflang="de", а если на итальянском — hreflang="it".

Один и тот же язык могут использовать в разных регионах: на английском говорят в Великобритании и США, но цены для этих стран будут в разной валюте, а значит, для них нужны и разные версии сайта. Тогда после кода языка через дефис нужно подставить код региона: 

● hreflang="en-gb" — так будет выглядеть атрибут hreflang для англоговорящих жителей Великобритании;

● hreflang="en-us" — а так для носителей английского в США.

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

Разные языковые версии страниц могут располагаться в разных каталогах, на разных поддоменах и даже доменах. Во всех трех случаях поисковики будут обрабатывать hreflang одинаково.

Указывать в каждой языковой версии страницы ссылки на все ее альтернативные версии

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

Все версии страницы на разных языках должны ссылаться друг на друга

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

Прописывать в каждой языковой версии страницы самореферентную ссылку

Самореферентная ссылка — это ссылка страницы на саму себя. 

Так, если у страницы есть две версии, русская и английская, то в каждой из них должен присутствовать следующий код:

<link rel="alternate" hreflang="ru" href="https://site.com/ru/">

<link rel="alternate" hreflang="en" href="https://site.com/en/">

Каждая из языковых версий страницы ссылается сама на себя

Для страницы на трех языках, например, русском, английском и немецком, в каждой версии страницы должно быть уже три ссылки:

<link rel="alternate" hreflang="ru" href="https://site.com/ru/">

<link rel="alternate" hreflang="en" href="https://site.com/en/">

<link rel="alternate" hreflang="de" href="https://site.com/de/">

Использовать hreflang со значением x-default

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

В этом случае используется следующий код: 

<link rel="alternate" hreflang="x-default" href="https://site.com/en/">

Здесь https://site.com/en/ — страница, которую нужно показывать по умолчанию.

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

Не использовать hreflang на неканонических страницах

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

Если страница является дублем, то она содержит атрибут rel="canonical", который во время сканирования сообщает поисковикам: «Этот контент не нужно индексировать, проиндексируйте, пожалуйста, другую страницу». Но если на этой же странице есть атрибут hreflang, то он сообщит поисковикам противоположное: «Контент на этой странице важен, его нужно проиндексировать».

Чтобы избежать такой путаницы, используйте hreflang только на канонических страницах.

Использовать теги HTML, если сайт переведен на небольшое количество языков и есть возможность редактировать код в разделе <head> страницы

Так проще всего проставить атрибуты на страницах с дублированным контентом. Подойдет для сайта с небольшим количеством языков, если CMS позволяет редактировать код в разделе <head> страницы.

Допустим, на сайте есть три страницы на разных языках с адресами:

https://site.com/page/russian/

https://site.com/page/english/

https://site.com/page/deutsch/

Тогда в раздел <head> каждой из этих трех страниц нужно добавить вот такой блок кода:

<link rel="alternate" hreflang="ru" href="https://site.com/page/russian/">

<link rel="alternate" hreflang="en" href="https://site.com/page/english/">

<link rel="alternate" hreflang="de" href="https://site.com/page/deutsch/">

Этот способ имеет один существенный минус: если вы переведете страницу еще на один язык, придется добавлять атрибут hreflang с соответствующим языком на каждую страницу. Когда языков 3–4, это можно сделать быстро, но если языков и страниц много, этот способ уже не подойдет.

Если на сайте много языков и страниц, результат занимает много места в коде страницы

Использовать Sitemap для сайтов с большим количеством страниц и языков и/или тогда, когда нет возможности редактировать код

Sitemap — это файл, в котором содержится карта сайта, то есть список всех его страниц. Его можно создать вручную или автоматически с помощью системы управления контентом, а посмотреть — по адресу https://имя-сайта/sitemap.xml. 

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

Для реализации в файл Sitemap добавляют элемент с URL страницы, а в его дочерних тегах указывают ссылки на все ее языковые варианты. Такой код будет выглядеть следующим образом:

<url>

<loc>https://site.com/page/russian/</loc>

<xhtml:link rel="alternate" hreflang="ru" href="https://site.com/page/russian/">

<xhtml:link rel="alternate" hreflang="en" href="https://site.com/page/english/">

<xhtml:link rel="alternate" hreflang="de" href="https://site.com/page/deutsch/">

</url>

Код для всех трех страниц будет выглядеть так:

<url>

<loc>https://site.com/page/russian/</loc>

<xhtml:link rel="alternate" hreflang="ru" href="https://site.com/page/russian/">

<xhtml:link rel="alternate" hreflang="en" href="https://site.com/page/english/">

<xhtml:link rel="alternate" hreflang="de" href="https://site.com/page/deutsch/">

</url>

<url>

<loc>https://site.com/page/english/</loc>

<xhtml:link rel="alternate" hreflang="ru" href="https://site.com/page/russian/">

<xhtml:link rel="alternate" hreflang="en" href="https://site.com/page/english/">

<xhtml:link rel="alternate" hreflang="de" href="https://site.com/page/deutsch/">

</url>

<url>

<loc>https://site.com/page/deutsch/</loc>

<xhtml:link rel="alternate" hreflang="ru" href="https://site.com/page/russian/">

<xhtml:link rel="alternate" hreflang="en" href="https://site.com/page/english/">

<xhtml:link rel="alternate" hreflang="de" href="https://site.com/page/deutsch/">

</url>

Редактировать заголовок HTTP-документа при публикации файлов в форматах, отличных от html 

Иногда на сайте дублируются не отдельные страницы, а материалы, предназначенные для скачивания пользователями в виде файла, — инструкции, книги и журналы, статьи, техническая документация и т. д.

В этом случае для каждой версии документа под заголовком Link через запятую указывают набор значений: <url>, rel =”alternate” и hreflang. Код будет выглядеть так:

HTTP/1.1 200 OK

Content-Type: application/pdf

Link: <https://ru.site.com/file.pdf>; rel="alternate"; hreflang="ru",

 <https://en.site.com/file.pdf>; rel="alternate"; hreflang="en",

 <https://de.site.com/file.pdf>; rel="alternate"; hreflang="de"

Использовать плагины и модули, если есть такая возможность и вы хотите сэкономить силы и время

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

Эта возможность доступна не для всех CMS. Если ваш сайт на WordPress, можно воспользоваться одним из плагинов: HREFLANG Tags Lite, Language Switcher, Juiz Lang Attribute.

Для сайтов на OpenCart используются модули: Hreflang alternate link, «SEO мультиязык», OCDEV.pro.

Проверять код на ошибки

Реализация hreflang — сложная процедура, в процессе легко можно потерять фрагмент кода, сделать в нем ошибку или добавить код не в ту часть страницы. Тогда поисковики будут игнорировать код и показывать пользователям ту версию страницы, которую сами сочтут нужной. Ошибки могут негативно сказаться на позициях вашего сайта. 

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

  • Ahrefs` Site Audit Tool,
  • сканер Screaming Frog,
  • инструмент «Аудит сайта» от SE Ranking,
  • сервис hreflang.ninja,
  • hreflang Tags Testing Tool.

В консоли Google увидеть ошибки можно в отчете «Таргетинг по странам и языкам» во вкладке «Язык».

Как внедрить атрибут rel="alternate" при создании мобильной версии сайта

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

Использовать связку атрибутов rel="canonical" и rel="alternate"

Для указания поисковикам на канонические страницы на каждой странице мобильной версии сайта прописывают атрибут rel="canonical" со ссылкой на аналогичную страницу в десктопной версии. И наоборот, на десктопной странице указывают атрибут rel="alternate", ведущий на мобильную страницу. Схематично это выглядит так:

Каждая из страниц указывает, в каких отношениях она находится с другой

Если на сайте есть две версии страницы с идентичным контентом, десктопная и мобильная, то в разделе <head> мобильной версии страницы необходимо прописать вот такой код:

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

  • rel="canonical" показывает поисковикам, что у страницы есть каноническая версия;
  • href="https://site.com/" уточняет, где эта версия находится.

В разделе <head> десктопной версии страницы, соответственно, необходимо прописать код:

<link rel="alternate" media="only screen and (max-width: 640px)" href="https://m.site.com/">

или

<link rel="alternate" media="handheld" href="https://m.site.com/">

  • rel="alternate" показывает поисковикам, что у страницы есть альтернативная версия;
  • media="only screen and (max-width: 640px)" и media="handheld" указывают поисковикам на типы устройств, на которых нужно показывать альтернативную страницу;
  • href="https://m.site.com/" уточняет, где находится альтернативная страница.

Проверять код на ошибки

Сервис Screaming Frog SEO Spider поможет узнать, для каких страниц настроен атрибут rel=”canonical” и какие страницы указаны в качестве канонических.

У Google есть инструмент проверки URL. С его помощью можно узнать, какую страницу Google считает канонической для конкретного URL.

В блоге «Яндекса» также указано, что вы можете увидеть в поиске обе версии сайта. Это может произойти, если робот уже знает об обеих версиях, но еще не отследил связь между ними. Если все настроено правильно, со временем робот исключит неподходящий сайт из выдачи.

Чек-лист для проверки после внедрения атрибута rel="alternate" на сайте

Если у вас мультиязычный сайт:

  1. Все коды языков и регионов прописаны правильно.
  2. Каждому URL соответствует только один язык, и наоборот, каждому языку — только один URL.
  3. На страницах присутствуют обратные теги (если страница А ссылается на страницу Б, то страница Б ссылается на страницу А).
  4. Каждая страница ссылается также на саму себя.
  5. На страницах c hreflang отсутствует атрибут rel="canonical".
  6. Язык HTML совпадает с языком, указанным в атрибуте hreflang.
  7. Все ссылки с атрибутами hreflang ведут на существующие страницы.
  8. На страницах указан атрибут hreflang со значением "x-default".
  9. Атрибуты rel="alternate" размещены в разделе <head>, если вы использовали реализацию через теги HTML.

Если у вас сайт с мобильной версией, расположенной на поддомене:

  1. Для каждой страницы указан только один канонический адрес.
  2. Канонические адреса не образуют «цепочку».
  3. Атрибуты rel="alternate" и rel="canonical" размещены в разделе <head>.
  4. Главная страница не является канонической для остальных страниц сайта.
  5. Все канонические страницы открыты для индексации.


Рекомендуем