BonBonSlick
@BonBonSlick
Junior Web Developer Trainee

Помещаться локаль в header или URL?

Столкнулся с вопросом вновь, ранее принял решение лепить локаль в ЮРЛ но, вот заметил что тогда надо локализовать, лепить локаль в 99% ссылок АПИ. Почему?
Банально валидации и ответ сервера, а не только локализованые сущности. К примеру ссылки
host.com/ru-ru/api/v1/login
host.com/ru-ru/api/v1/register
host.com/ru-ru/api/v1/update/profile

и прочие POST / PUT / PATCH должны быть обязательно локализованы, а не только GET запросы.
Ведь в случае ошибок на сервере при регистрации, они так же должны быть локализованы. К примеру, "пароль слишком короткий".
Но это создает определенное неудобство лепить локаль в юрл вместо хидера.

https://symfony.com/doc/current/translation/locale...
Since you can store the locale of the user in the session, it may be tempting to use the same URL to display a resource in different languages based on the user’s locale. For example, www.example.com/contact could show content in English for one user and French for another user. Unfortunately, this violates a fundamental rule of the Web: that a particular URL returns the same resource regardless of the user. To further muddy the problem, which version of the content would be indexed by search engines?

A better policy is to include the locale in the URL using the special _locale parameter:


Если такой подход более корректный и лучше для СЕО, то почему используют хидеры? К примеру Content-Language(en, de ...) and Accept-Language(en-us, de, ...) или кастомные типа X-Locale (en-us...)

Или вообще использовать суб домены?

Когда и какой же все таки выбрать подход, почему? Что лучше для СЕО?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 2
opium
@opium
Просто люблю качественно работать
Это апи ему насрать на сео
Ответ написан
PageAuditRU
@PageAuditRU
Senior SEO Анализатор
Если уйти от вопроса про URL и озадачиться только SEO, то языки необходимо указывать в следующих местах:
- HTTP-заголовок Content-Language: ru (Яндексу и Гуглу важно)
- Атрибут корневого элемента html lang="ru-RU" (Яндексу очень важно, Гуглу просто важно)

Не работает
- в meta http-equiv="content-language" (Яндексу и Гуглу от этого чуток нехорошо)
- в meta name="language" (поисковикам фиолетово)

И всё это должно быть не просто указано, а согласовываться с территорией продвижения. Если это Рунет, то это "ru" и его вариации, а не "en", "us" и прочие рудименты заграничных CMS.

Поставил на проверку версию, что язык в URL оказывает какое-то влияние на ранжирование.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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