Перейти к содержимому

SEO и рост2 мин чтения

hreflang для сайта на трёх языках: как устроен onlyapps.org

Один URL на язык, hreflang со взаимными ссылками, canonical на себя, sr-Latn для сербского и 404 вместо тихой подмены английским — правила, по которым работают наши английские, сербские и русские страницы.

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

Один язык — один адрес

У каждого языка свой URL: английский в корне, сербский под /sr/, русский под /ru/. Содержимое страницы никогда не зависит от cookie или языка браузера, поэтому робот, перешедший по ссылке, видит ту же версию, что и посетитель.

hreflang говорит поисковикам, какая страница для кого

Каждая страница перечисляет все свои языковые версии — включая саму себя — и x-default для всех остальных. Так выглядит head русской версии этой статьи:

html
<link rel="canonical" href="https://onlyapps.org/ru/blog/hreflang-three-languages" />
<link rel="alternate" hreflang="en" href="https://onlyapps.org/blog/hreflang-three-languages" />
<link rel="alternate" hreflang="sr-Latn" href="https://onlyapps.org/sr/blog/hreflang-three-languages" />
<link rel="alternate" hreflang="ru" href="https://onlyapps.org/ru/blog/hreflang-three-languages" />
<link rel="alternate" hreflang="x-default" href="https://onlyapps.org/blog/hreflang-three-languages" />

Важны несколько деталей:

  • Взаимные ссылки. Каждая версия должна ссылаться на каждую другую. Если русская страница указывает английскую, а обратной ссылки нет, поисковик может проигнорировать пару.
  • Canonical на себя. Каждая языковая версия каноническая сама для себя. Если направить все canonical на английскую, поисковики решат, что переводы — дубли.
  • Языковые теги. Значения следуют BCP 47. Сербский пишется двумя алфавитами, поэтому мы помечаем нашу версию как sr-Latn — сербский латиницей.
  • x-default. Английская версия — запасная для языков, которые мы не поддерживаем.

Нет перевода — 404, а не подмена

Если пост есть только на английском, /ru/blog/... отвечает 404, а не показывает тихо английский текст под русским адресом. Так каждый проиндексированный URL честен: язык в адресе совпадает с языком страницы. В набор hreflang попадают только реально существующие переводы, а переключатель языка ведёт на нужный перевод — или на главную страницу на этом языке, если перевода нет.

Карты сайта повторяют то же самое

Наши sitemap перечисляют каждую опубликованную страницу на каждом языке и добавляют к каждому URL те же альтернативы. Поисковики узнают связи, не загружая каждую страницу, а даты в lastmod меняются только при изменении контента.

ПроверкаКак выглядит правильно
Структура URLОдин URL на язык, без переключения через cookie
hreflangВсе версии перечислены на каждой версии, плюс x-default
CanonicalКаждая версия каноническая сама для себя
Нет перевода404 на этом языке, а не копия английской страницы
SitemapТе же альтернативы, что и в head страницы

Ошибки, которые встречаются чаще всего

  • Переведён интерфейс, а основной текст оставлен на английском под локализованным URL.
  • Редирект посетителей по IP, из-за которого роботы не видят остальные версии.
  • Путаница региона и языка: ru-RU ограничивает страницу Россией, а ru нацелен на русскоязычных по всему миру.
  • Забытые альтернативы после удаления перевода.

Совет

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

Хотите увидеть вживую? Переключите язык вверху страницы — попадёте на перевод этой статьи.

ПоделитьсяXLinkedIn

ONLYAPPS team

Нови-Сад, Сербия · onlyapps.org

Контакты

Аналитические cookie мы используем только с вашего согласия. Необходимые cookie обеспечивают работу сайта. Политика конфиденциальности