Однажды я проиграл солидный день, чтобы загрефланговать. У клиента был сайт на английском и французском языках, разделенный на несколько частей /en/ а /fr/, и их французские страницы просто не будут ранжироваться во Франции - Google продолжал всплывать английскую версию для французских поисковиков. разметка выглядела правильно. Это было в голове, коды были там, URL-адреса были решены. Проблема, как оказалось, заключалась в том, что английские страницы указывали на французские, но французские страницы не указывали назад. Hreflang должен быть взаимным, и Google выбрасывал весь кластер, потому что возвратные теги отсутствовали. Ничто в браузере не говорило мне, что. Никакой ошибки, никакого предупреждения - просто страницы тихо не ранжируются, где они должны.
Это грефланг в двух словах. концепция проста: рассказать поисковым системам, на каком языке и региональной версии страницы, чтобы показать, какие пользователи. выполнение является минным полем кодов ISO, соглашений об обсадных колонках, правил взаимности и запасного тега, о котором половина Интернета забывает. Я создаю и поддерживаю многоязычные сайты достаточно часто - через документацию Toolz.dev, WP Adminify's и различные проекты Laravel и React - что мне нужен инструмент, который генерировал бы теги и ловил ошибки перед отправкой. Это Генератор Грефланг, и это руководство - все, что мне хотелось бы знать в тот день.
Для концепции, а не для инструмента, начните с пояснены теги Hreflang, который является центром этой темы и содержит ссылки на фрагменты x-по умолчанию, распространенные ошибки грефлангаи настройки фреймворка для Следующий.js а WordPress, йо-
TL;DR: теги Hreflang сообщают поисковым системам, на каком языке/регионе страница будет обслуживаться каждым пользователем, используя
rel="alternate" hreflang="x"аннотация. Коды соответствуют ISO 639-1 (язык) и ISO 3166-1 (регион) - так и ВеликобританияGB, неUK. Теги должны быть взаимными (каждая страница ссылается назад), и вы должны включитьx-defaultрезервный копия. генератор выводит действительные теги в виде ссылок HTML, записей карты сайта XML или заголовка HTTP, проверяет каждый код, ловит дубликаты и запускается на 100% в вашем браузере.
Что такое теги hreflang и когда они вам нужны?
Тег hreflang - это аннотация, в которой говорится & quot; существует другая версия этой страницы для определенного языка и региона, и вот ее URL. & quot; синтаксис есть <link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />, где fr-CA означает французский язык, как говорят в Канаде Когда Google понимает эти отношения, он может обслуживать страницу канадского французского языка франкоговорящему в Канаде и страницу английского языка в США кому-то в Штатах, вместо того, чтобы угадывать или по умолчанию использовать ту версию, которая произошла, чтобы сканировать первой.
Вам нужен hreflang всякий раз, когда у вас есть практически одинаковый контент на более чем одном языке, или один и тот же язык, нацеленный на более чем один регион. блог, который существует только на английском языке, не нуждается в нем. SaaS маркетинговый сайт, переведенный на шесть языков абсолютно точно делает. средний случай - один язык, несколько регионов, как отдельные магазины США и Великобритании, которые оба на английском языке - где hreflang наиболее ценен и наиболее игнорируется, потому что страницы выглядят как дубликаты для Google, если вы явно не объявляете их как региональные варианты.
Выгода двоякая. во-первых, правильная версия занимает место на правильном рынке, что повышает клик-сквозь и конверсию, поскольку пользователи получают доступ к ценам, валютам и фразировкам, которые им подходят. Во-вторых, hreflang разряжает проблему дублирования контента: вместо ваших почти идентичных региональных страниц, конкурирующих и каннибализирующих друг друга, Google рассматривает их как один кластер альтернатив и выбирает наиболее подходящие для каждого запроса.
Почему коды всех сбивают с толку?
Потому что они следуют стандартам, а не интуиции, и стандарты имеют крайние случаи.
Значения представляют собой языковые теги BCP 47, определенные в РФЦ 5646и Google's собственный документация локализованных версий является ли власть, на которую она принимает подмножество.
Языковая часть представляет собой код ISO 639-1: две буквы, строчные, например en, fr, de, ja. Необязательная часть региона представляет собой код ISO 3166-1 альфа-2: две буквы, прописные, например US, GB, DE. Соедините их дефисом, и вы получите en-US или de-DE. Условные соглашения, которые кусают людей:
- выше Соединенное Королевство является
GB, неUK, йо-UKне является действительным кодом ISO 3166-1, иen-UKэто бездействующий. - Язык на первом месте и является обязательным; регион не является обязательным и не может оставаться отдельно. Вы не можете нацелиться
USсам по себе - не существует такого понятия, как рефланг только региона. Это всегда язык, при необходимости суженный регионом. - Латинская Америка использует код ООН M49,
es-419, потому что он охватывает множество стран, а не одну Этот трехзначный код региона действителен и полезен для & quot;Spanish, Latin American variety.& quot; - Китайскому часто нужен субтег сценария, типа
zh-Hant(Традиционный) илиzh-Hans(Упрощенно), потому что письменная форма имеет большее значение, чем страна.
Генератор проверяет все это Он проверяет каждый код на соответствие ожидаемой форме, нормализует оболочку (строчный язык, область верхнего регистра, сценарий заголовка) и предупреждает вас, когда подтег не является признанным языком или регионом ISO - так en-UK помечается, прежде чем он потеряет возможность сканирования.
Как мне использовать генератор Hreflang?
Инструмент построен на основе списка языковых версий и выбора выходного формата.
Шаг 1. Добавьте свои версии. Каждая строка представляет собой код языка/региона плюс полный URL-адрес этой версии. Список быстрого выбора предлагает общие коды (en-US, es-419, zh-Hant, x-default, и более) так что вам не нужно запоминать точный корпус Добавить строку для каждой версии.
Шаг 2. Включите x-по умолчанию. Добавить строку с кодом x-default указание на резервный URL-адрес. Это версия, обслуживаемая пользователями, на язык которых вы явно не ориентировались - часто это страница выбора языка или ваша основная домашняя страница.
Шаг 3 - Выберите формат. Переключиться между HTML <link> теги для заголовка страницы, xhtml:link записи для карты сайта XML или HTTP Link заголовок для файлов, не относящихся к HTML. При редактировании генератор проверяет каждый код и URL-адрес, ловит дубликаты кодов и показывает таблицу состояния для каждой строки, чтобы вы могли с первого взгляда увидеть, какие записи действительны.
Шаг 4. Скопируйте и разверните взаимно. Скопируйте вывод и - это та часть, которая имеет значение - добавьте один и тот же полный набор тегов к каждому URL-адресу в группе, включая самореферентную запись. Затем подтвердите настройку с помощью отчета о международном таргетинге в консоли поиска Google.
Все работает на стороне клиента, поэтому ваша структура URL-адресов, которая может раскрыть всю вашу международную архитектуру, никогда не покидает браузер. Это та же самая модель конфиденциальности за каждым инструментом на сайте, описанная в Руководство по конфиденциальности данных, йо-
Как выглядит вывод в каждом формате?
Вот работающий пример, а не описание Магазин, продающий в США, Великобритании, Франции и Латинской Америке, с страницей выбора языка в качестве запасного варианта Пять строк идут в:
| грефланг | сводка |
|---|---|
x-default |
https://example.com/ |
en-US |
https://example.com/us/ |
en-GB |
https://example.com/uk/ |
fr-FR |
https://example.com/fr/ |
es-419 |
https://example.com/latam/ |
Обратите внимание на две вещи об этом наборе перед выводом. en-US а en-GB оба являются английскими, различающимися только по рынку, что и есть случай, когда существует рефланг, и в случае, если большинство сайтов пропускают. и es-419 является ли код региона ООН M49 для Латинской Америки, который инструмент признает действительным, а не помечает, поскольку трехзначный регион является законным в языковом теге, даже если он не является кодом ISO 3166-1 альфа-2.
Теги ссылок HTML, для страницы <head>,
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
Точный блок идет на всех пяти страницах, без изменений. Не & quot; остальные четыре & quot; на каждой странице: все пять, включая страницу и #39;s собственной записи. вот что делает аннотации взаимными.
Записи карты сайта XML, где инструмент заворачивает тот же набор в a <url> элемент и использует URL-адрес вашей страницы в качестве <loc>,
<url>
<loc>https://example.com/us/</loc>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<xhtml:link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
</url>
Генератор напоминает вам о части, которая живет за пределами блока, который он может производить: <urlset> элементу необходимо объявленное пространство имен xhtml или каждое xhtml:link запись игнорируется, пока файл все еще проверяется как карта сайта.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
Заголовок HTTP-ссылки, одно значение заголовка для файлов без <head> для редактирования, например PDF:
Link: <https://example.com/>; rel="alternate"; hreflang="x-default", <https://example.com/us/>; rel="alternate"; hreflang="en-US", <https://example.com/uk/>; rel="alternate"; hreflang="en-GB", <https://example.com/fr/>; rel="alternate"; hreflang="fr-FR", <https://example.com/latam/>; rel="alternate"; hreflang="es-419"
Это одна длинная линия по замыслу: одна Link заголовок, несущий значения, разделенные запятыми. В nginx это единица add_header Link "..."; директива; в Апаче один Header set Link "...". Разделение его на несколько частей Link заголовки также работают, но сохранение его в качестве одного значения делает очевидным, что набор завершен.
Что означают предупреждения генератора & #39;s?
Инструмент отделяет ошибки, которые останавливают запись, излучаемую, от предупреждений, которые пропускают ее, но отмечают что-то, на что вы должны смотреть Различие имеет значение, потому что большинство ошибок hreflang являются юридической разметкой, которая ничего не значит.
| сообщение | Что его спровоцировало | Что делать |
|---|---|---|
| Недопустимый языковой тег | Значение не совпадает language[-Script][-REGION] |
Сначала используйте код языка, необязательный регион или литерал x-default |
| Языковой подтег не является распространенным кодом ISO 639-1 | Хорошо сформированный, но непризнанный язык | Проверьте его по ISO 639-1; метка излучается в любом случае |
| Подтег региона не является распространенным кодом ISO 3166-1 | Хорошо сформированный, но непризнанный регион | Вот что ловит en-UK, где GB является правильным |
| Дубликат грефланг | Один и тот же код появляется в наборе дважды | Удалить одну; две записи для одного кода - это противоречие |
| Нет набора x по умолчанию | В наборе нет запасного ряда | Добавьте один указатель на странице селектора или на свою основную версию |
| грефланг работает в кластерах | Только один URL в наборе | Добавьте другие языковые версии; кластер с одной записью ничего не делает |
| грефланг должен быть взаимным | Всегда показано | Разверните идентичный блок на каждом URL-адресе в группе |
Последний всегда отображается, а не условно, потому что это сбой, который не может обнаружить ни один клиентский инструмент Взаимность - это свойство других страниц, а не набора перед вами, поэтому генератор устанавливает правило вместо того, чтобы притворяться, что проверяет его. Каждое другое предупреждение здесь - это то, что он действительно может проверить.
Обратите также внимание, что коды нормализуются, а не отклоняются при использовании корпуса: EN-gb становиться en-GB, zh-hant становиться zh-Hant. Языковые теги сопоставляются нечувствительно, поэтому оболочка является условной, но согласованный вывод делает разницу между двумя страницами читаемой.
Какой формат вывода выбрать?
Google принимает три метода реализации, и правильный зависит от вашего стека и количества страниц.
| метод | лучше для | Компромисс |
|---|---|---|
HTML <link> теги |
Большинство сайтов; прямой контроль на странице | Добавляет вес каждой странице's голова; должна быть на каждой странице |
Карта сайта XML xhtml:link |
Большие сайты; поддерживает чистоту HTML | Требуется поддержание карты сайта; медленнее для обработки Google |
ХТТП Link заголовок |
Файлы, не относящиеся к HTML, такие как PDF-файлы | Нужна конфигурация сервера; сложнее аудировать |
Для типичного сайта, Теги ссылок HTML являются наиболее прямолинейными - вы видите их в источнике, они легко отлаживаются, и каждый фреймворк может их рендеринг. для большие сайты с сотнями языковых вариантоввставляя грефланг Карта сайта XML сохраняет головки страниц постными и централизует аннотации в одном файле (не забудьте добавить) xmlns:xhtml="http://www.w3.org/1999/xhtml" в <urlset> элемент, о котором инструмент напоминает).The Заголовок HTTP метод нишевый, но необходим для ресурсов, не относящихся к HTML, таких как PDF-файлы, где нет головы, в которую можно было бы поместить тег ссылки.
Какой бы вы ни выбрали, используйте только один метод на набор страниц. смешивание HTML-тегов и записей карты сайта для одних и тех же URL-адресов может посылать Google противоречивые сигналы. если вы уже генерируете карту сайта, слоты формата карты сайта tool's непосредственно в выходные данные Генератор карты сайта XML, йо-
Что такое x-default и почему это имеет значение?
x-default является ли значение hreflang, которое указывает запасную страницу для любого пользователя, язык или регион которого вы не были явно нацелены. если ваш сайт имеет версии на английском, французском и немецком языках, и кто-то просматривает на японском языке, приходит, x-default сообщает Google, куда их отправить - обычно нейтральная домашняя страница или страница, позволяющая им выбрать язык.
Он не является обязательным в том смысле, что hreflang работает без него, но Google рекомендует включить его, и я отношусь к нему как к обязательному на практике. без x-default не имеющие себе равных пользователи получают ту версию, которую Google догадывается ближе всего, которая часто является просто вашей самой прополкой страницы, а не преднамеренным выбором.
Для инструмента's часть: набор без x-default строка поднимает предупреждение, а не ошибку, поэтому вы все еще можете скопировать вывод, но вам будет сказано Добавить строку и резервный вариант излучается в любом из трех выбранных вами форматов, в одной и той же позиции на каждой странице. куда указать, и ошибки, которые делают его бесполезным, описаны в руководство x-default, йо-
Почему грефланг должен быть взаимным?
Это тот, который стоил мне дня, поэтому у него есть свой раздел. Аннотации Грефланга должны быть взаимными. Если страница A объявляет страницу B своим французским альтернативой, страница B должна объявить страницу A взамен. Google доверяет отношениям только тогда, когда обе стороны подтверждают это. если обратный тег отсутствует, Google полностью игнорирует аннотацию - молча, без ошибок на странице.
Чистый способ удовлетворить это - разместить полный, идентичный набор тегов hreflang на каждой странице группы, включая самореферентную запись (страница, указывающая на себя). Итак, на вашем en-US страница, вы включаете теги для en-US, en-GB, fr-FR, de-DE, и x-default - и на сайте появляется точно такой же блок en-GB страница, the fr-FR страница, и так далее. каждая страница в кластере несет всю карту. она кажется избыточной, но именно она делает аннотации взаимными и это то, что ожидает Google.
Вот почему создание тегов - это только первый шаг. бесплатный генератор грефланга производит полный блок для вас, чтобы повторно использовать через кластер, и он напоминает вам о взаимности в своих предупреждениях, но дисциплина развертывания - тот же блок, каждая страница - на вас. Получить это правильно и коды правильно, и hreflang работает тихо и надежно. Получить неправильно и это не удается так же тихо. для более широкого контекста сборки технического стека SEO, я собрал соответствующие утилиты в обзор инструментария веб-разработчика, йо-
Как проверить, что hreflang работает?
После развертывания проверьте с помощью Отчет о международном таргетинге (исторически называется отчетом hreflang) в консоли поиска Google. в нем перечислены ошибки, такие как & quot; нет возвратных тегов & quot; и & quot;неизвестные языковые коды & quot; по всему вашему сайту, что намного быстрее, чем проверка страниц по одной. сканирование с помощью инструмента SEO-аудита также подтвердит, что каждая страница содержит полный взаимный набор.
Ошибки, которые я вижу чаще всего, в грубом порядке частоты: отсутствующие теги возврата (сбой взаимности выше), нет x-по умолчанию, использование UK вместо GB или другие коды, не относящиеся к ISO, теги только для региона это попытка нацелиться на страну без языка, относительные URL где для грефланга нужны абсолютные, и методы реализации смешивания для тех же страниц. каждый из них производит разметку, которая выглядит правдоподобно и ничего не делает.
выше генератор меток Грефланг предназначен для того, чтобы поймать те, которые машина может поймать - искаженные коды, неизвестные подтеги, дубликаты, неабсолютные URL-адреса и отсутствующие x-по умолчанию - и напомнить вам о тех, которые она не может обеспечить для вас, а именно взаимность. Полный каталог с симптомом, который каждый из них производит, находится в 12 распространенных ошибок грефланга. Если вы подключаете рефланг к более крупной многоязычной сборке, генератор метатегов обрабатывает остальную часть вашей головы на странице и Руководство по инструментам кодирования завершает рабочий процесс разработчика.
Какие крайние случаи вам следует планировать?
Как только основы созданы, достаточно часто возникает несколько ситуаций, которые можно спланировать. Канонические теги и грефланг должны быть согласованы. Каждая страница's canonical должна указывать на себя, а не на другую языковую версию - если ваша французская страница канонизируется до английской, вы говорите Google полностью отказаться от французской страницы, что отменяет только что добавленный вами грефланг. Сохраняйте канонические ссылки на себя в языковом кластере и позвольте грефлангу описывать отношения между кластерами; грефланг против канонического работает через комбинации.
Язык и страна являются независимыми осями. Это совершенно справедливо en-US, en-GB, и en-CA все на английском языке, но ориентировано на разные страны и одинаково справедливо fr-CA а en-CA оба ориентированы на Канаду на разных языках. не предполагайте одну страницу на страну или одну на язык; вы сопоставляете конкретные комбинации, которые на самом деле обслуживает ваш сайт.
Косая черта и протоколы должны соответствовать вашим реальным URL-адресам. точки Грефланга на точных URL-адресах, так что https://example.com/fr/ а https://example.com/fr являются различными целями. используйте каноническую, индексируемую форму каждого URL-адреса - ту же, которую вы бы отправили на карте сайта - поэтому аннотация разрешается на живую страницу, а не на перенаправление. перенаправление в цели hreflang не является фатальным, но добавляет скачок и шанс ослабления сигнала, поэтому стоит получить точное.
Часто задаваемые вопросы
Что такое бирка hreflang?
Тег hreflang сообщает поисковым системам, на каком языке и региональной версии страницы отображать данного пользователя. Он использует rel="alternate" hreflang="x" аннотацию, где x - код языка (необязательно с регионом), поэтому говорящему на испанском языке в Мексике можно обслуживать вашу страницу es-MX вместо английской. Hreflang помогает международным сайтам избежать проблем с дублированием контента и ранжировать нужную страницу на каждом рынке.
Какой правильный формат hreflang?
Значение - код языка ISO 639-1, за которым опционально следует регион в качестве кода ISO 3166-1 альфа-2 - например en, en-GB или pt-BR. Язык стоит на первом месте, и регион не является обязательным; вы не можете нацелиться только на регион. Обратите внимание, что стандарты отличаются от повседневных сокращений: Великобритания - это Великобритания, а не Великобритания.
Что означает X-по умолчанию в hreflang?
X-default указывает страницу резервного копирования для пользователей, язык или регион которых вы не нацелились. Обычно это ваша домашняя страница или страница выбора языка. Google рекомендует включать X-по умолчанию в каждый набор Hreflang, поэтому непревзойденные посетители отправляются в нечто разумное, а не в случайной языковой версии.
Где я должен поставить теги hreflang?
Вы можете реализовать hreflang в трех местах: как ссылка rel="alternate" теги в HTML-головке, как записи xhtml:link в вашей карте сайта XML, или как заголовок HTTP Link (полезный для файлов, не относящихся к HTML, как PDF-файлы).Выберите один метод и применяйте его последовательно - смешивание их для одних и тех же страниц может посылать противоречивые сигналы. Этот инструмент генерирует все три.
Должны ли теги hreflang быть взаимными?
Да. если страница A объявляет страницу B своим альтернативным французским языком, страница B должна объявить страницу A взамен. Google игнорирует аннотации hreflang, которые не подтверждаются возвращаемыми тегами на страницах, на которые они указывают. Самый простой подход - включить полный, идентичный набор записей hreflang - включая самореферентный - на каждой странице группы.
Могут ли теги hreflang исправлять дублирующий контент по регионам?
Hreflang не удаляет дубликаты контента, но сообщает Google, что похожие страницы являются региональными или языковыми вариантами друг друга, а не дубликатами для фильтрации. Это помогает правильному ранжированию версии на каждом рынке, а не на страницах, которые каннибируют друг друга. Для действительно идентичных страниц сочетайте hreflang с правильными каноническими тегами, которые каждый из них указывает на себя.
Как проверить, что hreflang работает?
Используйте отчет «Международный таргетинг» (или Hreflang) в консоли поиска Google, в котором перечислены ошибки, такие как отсутствующие теги и коды неизвестного языка. Вы также можете просканировать сайт с помощью инструмента SEO-аудита, чтобы подтвердить, что каждая страница содержит полный набор reciprocal. Исправления могут занять время, так как Google должен пересматривать каждую страницу в группе.
Являются ли мои данные закрытыми?
да. Теги полностью генерируются в вашем браузере с помощью простого JavaScript. Ваши URL-адреса и структура сайта никогда не передаются, не регистрируются или сохраняются, а генератор продолжает работать без сетевого подключения после загрузки страницы.



