Генератор hreflang — создайте языковые теги для многоязычных сайтов
Без hreflang Google может считать переведённые страницы дубликатами и показывать пользователю версию не на том языке. Преобразуйте набор языковых URL в разметку hreflang в трёх формах: теги <link>, заголовок HTTP Link и sitemap <xhtml:link>. Шаги: вставьте каждый языковой URL с его кодом, выберите форму и скопируйте готовый фрагмент. Каждый URL получает собственную аннотацию самоссылки, а при желании добавляется запасной x-default. Работает полностью на вашем устройстве — ничего не загружается. Пример: три версии одной страницы на en, es и ja.
Как это работает
Генератор разбирает каждую строку на код языка и URL, затем выводит один и тот же набор связей в трёх формах. Форма <link> вставляется в <head> каждой страницы. Форма заголовка HTTP Link отправляется в ответе сервера. Форма sitemap встраивает <xhtml:link> внутрь каждого блока <url>. Каждый URL получает аннотацию hreflang-самоссылки, чтобы каждая языковая версия указывала на себя, а необязательная запись x-default покрывает посетителей, чей язык не указан.
Правила генератора
Эти правила взяты из Google Search Central и стандарта языковых тегов BCP 47.
- Каждая языковая версия должна включать hreflang-самоссылку на собственный URL. Её пропуск ослабляет сигнал.
- Каждый URL должен быть перечислен из всех языковых версий: полный набор альтернатив есть на каждой странице, а не только в одну сторону.
- Коды языка по BCP 47: язык из двух букв, опционально регион (en-US) и опционально письменность (zh-Hans). x-default — специальный запасной код.
- x-default указывает на страницу, показываемую, когда ни один из перечисленных языков не совпадает, например на английскую корневую страницу. Google может использовать её как запасную для всех нераспознанных языков.
- Для одного набора выберите одну форму доставки: теги <link> в HTML, заголовок HTTP Link или xhtml:link в sitemap. Не смешивайте формы для одного набора — сигналы могут противоречить друг другу.
Пример
В примере три версии одной страницы: https://example.com/ (en), https://example.com/es/ (es) и https://example.com/ja/ (ja). Сгенерированные теги <link> включают самоссылки для каждого языка плюс необязательный x-default на английскую корневую страницу.
Подходящие сценарии
- Запуск многоязычного сайта: один раз сгенерируйте теги <link> для каждого шаблона и проверьте, что каждая языковая версия перечисляет полный набор.
- После реструктуризации сайта перегенерируйте разметку, чтобы соответствие URL оставалось согласованным между языками, а не расползалось.
- Когда в результатах поиска отображается неверный язык, проверьте наличие самоссылок и x-default и убедитесь, что URL ведут на канонические страницы.
Frequently asked questions
Какую из трёх форм использовать?
Используйте теги <link>, если можете редактировать HTML. Используйте заголовок HTTP Link, когда страницы отдаёт ваш сервер и HTML менять сложно. Используйте форму sitemap, если хотите держать всё в XML-карте сайта.
Когда добавлять x-default?
x-default сообщает Google, какую версию показывать, когда язык посетителя не совпадает ни с одним кодом. Добавляйте его, когда есть корневая или запасная страница, обычно английская.
Каждому ли URL нужна hreflang-самоссылка?
Да. Каждая языковая версия должна включать собственный URL в набор с hreflang-самоссылкой на себя. Google использует полный набор, чтобы выбрать правильную страницу для каждого языка.
Какой формат кода языка допустим?
Коды BCP 47: язык из двух-трёх букв, опционально регион (en-US) и опционально письменность (zh-Hans). Язык строчными буквами, и не придумывайте коды вроде «en-us-en».
Hreflang в <head> или в sitemap?
Работает и то и другое, но для набора страниц выберите одну согласованную форму. Теги <link> живут в <head>, заголовок HTTP Link отправляется с ответом, а sitemap использует блоки xhtml:link.
Мои URL куда-то загружаются?
Нет. Генератор работает полностью в вашем браузере, и ничего не загружается.
Вопросы и отзывы
Что-то неясно, сломано или отсутствует? Напишите сообщение ниже — мы читаем каждую заметку об этих инструментах.