РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗sePmInLR 98 of 123 menu

Редирект по языку в SEO

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

Робот приходит из дата-центра без языковых настроек. Чаще всего он видит "en-US" или вообще ничего. И получает редирект не туда, куда нужно. Или попадает в бесконечный цикл редиректов и уходит ни с чем.

Давай посмотрим, как это выглядит в коде. Вот типичная серверная логика на псевдокоде:

if (browser_lang == "ru") { redirect("/ru/") } else { redirect("/en/") }

Робот заходит на /. Язык браузера у него "en-US". Его редиректят на /en/. Русская версия /ru/ вообще не обходится. В индексе только английская. Русские пользователи в поиске не находят сайт.

Хуже, если редирект завязан на IP-адрес. Робот приходит с американского IP, а сайт нужен для России. Робот видит только "en"-версию и не индексирует основную.

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

Как сделать правильно

Языковые версии должны быть доступны по своим адресам без редиректов. Каждая версия индексируется отдельно.

Вот правильная структура URL:

https://example.com/ru/ https://example.com/en/ https://example.com/de/

На каждой странице вешаем link с атрибутом rel="alternate" и hreflang. Это говорит роботу: вот та же страница на другом языке.

<link rel="alternate" hreflang="ru" href="https://example.com/ru/"> <link rel="alternate" hreflang="en" href="https://example.com/en/"> <link rel="alternate" hreflang="de" href="https://example.com/de/">

Плюс ставим x-default для страницы выбора языка или основной версии:

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

Теперь робот обходит все версии. Никаких редиректов по языку браузера. Человек сам выберет язык через меню.

Что делать, если редирект уже стоит

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

Второе: проверить, как робот видит сайт. Запроси страницу с разными заголовками Accept-Language.

curl -I -H "Accept-Language: en-US" https://example.com/ curl -I -H "Accept-Language: ru-RU" https://example.com/

Если ответы разные или есть 301 и 302 - редирект на месте. Убирай.

Третье: настроить hreflang для всех языковых версий. И добавить их в sitemap.xml.

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

Вот пример баннера на HTML:

<div class="lang-banner"> <p> Looks like you prefer English. <a href="/en/">Go to English version</a> </p> </div>

Это безопасно для SEO и удобно для людей.

Практические задачи

Расскажите, почему редирект по языку браузера ломает обход роботом.

Дан код на сервере:

if (browser_lang == "ru") { redirect("/ru/") }

Что произойдет, когда робот с языком "en-US" зайдет на главную страницу?

Дана верстка:

<head> <title>Example</title> </head>

Добавьте теги link с hreflang для русской, английской и немецкой версий.

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

Как проверить через командную строку, что сервер редиректит по заголовку Accept-Language?

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить