Как это выглядит
В карте сайта каждая страница описывается элементом url, а её версии — вложенными элементами xhtml:link. Как и в тегах, набор включает все версии, в том числе саму страницу.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://example.com/ru/delivery/</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/ru/delivery/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/delivery/"/>
</url>
<url>
<loc>https://example.com/en/delivery/</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/ru/delivery/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/delivery/"/>
</url>
</urlset>
Сравнение способов
| Критерий | Теги в head | Карта сайта |
|---|---|---|
| Вес кода страницы | Растёт с числом версий | Страница не меняется |
| Централизация | Наборы разбросаны по страницам | Все связи в одном файле |
| Генерация | Нужна правка шаблонов | Формируется одним скриптом |
| Проверка вручную | Видно в коде страницы | Нужно открывать файл |
| Для не-HTML файлов | Не подходит | Подходит |
Ограничения и особенности
- Размер файла растёт быстро: каждая страница содержит список всех своих версий. Для больших сайтов карту делят на части и объединяют индексным файлом.
- Действуют обычные ограничения карты сайта на число адресов и размер файла.
- Правила взаимности и ссылки на себя те же, что и для тегов.
- Не дублируйте один и тот же hreflang и в тегах, и в карте: используйте единый способ.
Когда выбирать карту сайта
Карта сайта особенно удобна, когда версий много, шаблоны сложно менять или нужно указать версии для файлов, не являющихся страницами. Если же сайт небольшой, теги в head проще проверять глазами. Общие принципы карты сайта — в статье про sitemap.xml.
Как построить такую карту
- Возьмите таблицу версий страниц: адреса всех языков и регионов.
- Для каждого адреса создайте элемент
urlсо списком всех своих версий. - Проверьте, что каждая версия присутствует в карте и как собственный элемент, и как запись в наборе остальных.
- Разбейте файл на части при приближении к ограничениям и подайте индексный файл в панель вебмастера.
Что делать, если версия есть не у всех страниц
| Ситуация | Как поступать |
|---|---|
| У страницы есть все языковые версии | Полный набор в каждом элементе |
| Страница существует только на одном языке | Наборы не нужны, страница описывается без них |
| Часть языков есть, часть нет | Указывать только существующие версии |
| Версия удалена | Убрать запись из наборов остальных версий |
Частые вопросы
Можно ли одновременно использовать hreflang в тегах и в карте сайта?
Не рекомендуется: лучше выбрать один способ, чтобы наборы не расходились между собой.
Нужно ли в карте сайта указывать саму страницу среди её версий?
Да, набор версий каждой страницы включает и её собственный адрес.
Что делать с ростом размера файла?
Разбить карту на несколько файлов и связать их индексным файлом sitemap.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.