megafax
@megafax
web-программист

Как правильно строить URL для многоязычного сайта?

Насколько я знаю, есть несколько способов реализации многоязычности со своими плюсами и минусами:

1. Реализация через домен / поддомен. К примеру, site.ru - русский, en.site.ru или site.com - английский. Тут, я думаю, проблем нет с технической точки зрения и с точки зрения SEO. Единственным минусом может являться то, что это совершенно разные сайты и соответственно указать что это один и тот же сайт для ПС может быть проблематично.

2. Реализация через URL: К примеру, site.com/ru или site.com/ru-ru и site.com/en или site.com/en-us. Плюсами такой реализации считаю построение всей архитектуры в рамках одного домена и практически все страницы имеют свой аналог (в идеале) в другой локали. Но тут для SEO возникает вопрос в том, что нет той самой главной страницы site.com, поскольку с нее происходит редирект на распознанную локаль пользователя ("/" -> "/ru" к примеру). Можно это конечно решить "костылем", что главная только для "основного" языка без параметров и редирект соответвенно делать ("/ru" -> "/"), но мой внутренний перфекционист безумно страдает при таком варианте, поскольку это все равно "костыль". Если в аргументах указывать такие сайты как microsoft, то в ответ можно услышать что то типа "не с тем сравниваешь". Этот вариант я все же считаю наиболее приемлемым.

3. Аналогично п2, только использовать GET параметр - site.com - русский, site.com/?lang=en - английский. Этот вариант, честно говоря, вообще мне не нравится, поскольку "постоянные" страницы делать с GET параметром вообще неправильно.

4. Все страницы по своему URL доступны во всех локалях и покатываются в той, которая определена при чтении заголовков. Тут можно использовать несколько вариантов определения: Accept-language, GeoIP, локаль из наскроек если авторизирован, локаль по умолчанию. Но и в этом способе получается, что для поисковой системы один URL может быть теоретически отображен с разным содержанием, что крайне нежелательно с точки зрения SEO. Хотя этот способ считаю наиболее user-friendly.

Так как же все таки правильно организовать построение многоязычности на сайте, чтобы все были довольны?
  • Вопрос задан
  • 568 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
итак, верный ответ - site.com/en
Ссылка на сайт должна иметь вид site.com
Определение языка на который редиректить по порядку проверки:
1) куки(возможно человек уже был у вас и выбрал язык)
2) Accept-language, т.к. большинство все же ставит свою родную локаль в браузере.
3) GeoIP если по каким-то причинам вышестоящие пункты не сработали
4) Язык по умолчанию(предполагаемо самый распространенный для вашей аудитории) как истина в последней инстанции.

Как таковой ГЛАВНОЙ страницы не будет, но это нормально для любого мультилингвального сайта, гугл считает это адаптацией под клиента, т.е. "сайт для людей", здесь все ок.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@WayMax
site.com/en как у большинства (например Майкрософт).
Ответ написан
petermzg
@petermzg
Самый лучший программист
Вариант 3, что вам не нравиться. А язык передается через cookie, приоритет у GET параметра.
В заголовке страницы прописываете:
<link rel="alternate" hreflang="x-default" href="http://site.com/" />
<link rel="alternate" hreflang="en" href="http://site.com/?lang=en" />
<link rel="alternate" hreflang="ru" href="http://site.com/?lang=ru" />
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы