Можно ли использовать один и тот же URL для сайта, поддерживающего несколько языков?

Здравствуйте! У меня возник вопрос, касающийся организации смены языковой версии сайта. Например, когда я нахожусь на странице новостей и переключаю язык, я остаюсь на том же URL-адресе, но страница отображается на другом языке. Как это реализуется на техническом уровне? 

Я предположил, что с помощью JavaScript при выборе нового языка отправляется запрос в контроллер (LanguageController), который выполняет редирект на текущую страницу, при этом в куки сохраняется выбранный язык ($_COOKIE['lang']['en']). В NewsController с помощью SQL-запроса извлекается новость, используя условие WHERE lang='en' и дополнительное условие AND url='текущий урл, на который нажали для перехода'. Однако меня беспокоит, что я не могу изменить это условие при смене языка, если я уже нахожусь на странице конкретной новости.

Исходя из этого, можно ли считать нормальным, что разный язык может отображаться по одному и тому же URL: site.ru/news/novost-takaya-to? Как это может повлиять на работу поисковиков? Будут ли они индексировать один и тот же URL-с адрес в разных языковых версиях?
  • 20 января 2025 г. 13:54
Ответы на вопрос 4
Использование одного и того же URL для разных языковых версий страницы — это распространенная практика, и она может быть реализована различными способами. Вот несколько аспектов, которые стоит учитывать:

### Техническая реализация

1. **Хранение выбранного языка**: Как вы упомянули, можно использовать куки или сессии для хранения выбранного пользователем языка. Это позволит серверу определять, какой язык следует отображать при запросе определенного URL.

2. **Динамическая подмена контента**: На серверной стороне, при обработке запроса, вы можете проверить, какой язык хранится в куках или сессии, и на основе этого динамически загружать контент на нужном языке. Это может зависеть от языка, а также от URL. Например, если пользователь находится на `site.ru/news/novost-takaya-to`, можно извлечь новость, которая соответствует этому URL и языку, сохраненному в куке.

3. **JavaScript**: Используя JavaScript, вы можете установить новый язык и перезагрузить страницу без изменения URL. Это можно сделать через AJAX-запросы или простую перезагрузку страницы после изменения значения кука.

### SEO и индексация

1. **Поисковые системы**: Поисковые системы, такие как Google, могут иметь сложности с индексированием страниц, если они используют один и тот же URL для разных языков без правильной настройки. Важно использовать атрибут `hreflang`, чтобы указать, что разные языковые версии одной и той же страницы (с одинаковым URL) относились к нанче разным языкам. Это позволяет поисковым системам правильно понимать, какие страницы показывать пользователям в зависимости от их языковых предпочтений.

   Пример использования `hreflang`:
   ```html
   <link rel="alternate" hreflang="en" href="https://site.ru/news/novost-takaya-to" />
   <link rel="alternate" hreflang="ru" href="https://site.ru/news/novost-takaya-to" />
   ```

2. **Содержание страницы**: Если содержание страниц на разных языках действительно отличается, то это может вызвать проблемы с дублирующимся контентом. Поисковики могут не знать, какую версию индексировать.

3. **Качественный контент**: Такой подход может быть нормальным, если вы используете правильные мета-теги и обеспечиваете качественный контент. Обеспечение высококачественного перевода и правильная разметка, как описано выше, помогут избежать проблем с SEO.

### Альтернативы

Если вы хотите избежать потенциальных проблем с SEO, то можно рассмотреть другие подходы, такие как:

- **Использование разных URL**: Например, `site.ru/en/news/novost-takaya-to` для английской версии и `site.ru/ru/news/novost-takaya-to` для русской версии.
- **Параметры в URL**: Например, `site.ru/news/novost-takaya-to?lang=en`.

Каждый из этих подходов имеет свои плюсы и минусы, и выбор зависит от вашей конкретной ситуации и стратегии SEO.
Если хотите чтобы страницы на разных языках индексировались то у каждой страницы должен быть отдельный url 
Отдельный url может быть каким угодно, префиксом типа /ru/, /en/ или GET-параметром ?lang=ru или даже субдоменами типа ru. en.
Субдомены не рекомендую так как они в целом понижают вес основного сайта

Можно ознакомится с рекомендациями гугла на эту тему, там всё довольно исчерпывающе описано
https://developers.google.com/search/docs/specialt...
https://developers.google.com/search/docs/specialt...

Желательно каноничные страницы на разных языках разметить через метатеги
<link rel="alternate" hreflang="lang_code"... >

Ну и для примера как делает сам гугл в своей документации - использует GET- параметр ?hl=XX

RU
https://developers.google.com/search
/docs/specialty/international/managing-multi-regional-sites?hl=ru

EN
https://developers.google.com/search
/docs/specialty/international/managing-multi-regional-sites?hl=en

EN (default no hl=)
https://developers.google.com/search
/docs/specialty/international/managing-multi-regional-sites
Вот и собственно отсюда и вопрос, а нормально ли будет, если имея одинаковый урл: site.ru/news/novost-takaya-to будет разный язык? Как при этом будет вести себя поисковик? Сможет ли, будет ли индексировать один и тот же урл в разных версиях?

ПС будет видеть тот контент, который у него загружается по умолчанию, кликать он никуда не будет. Чтобы ПС начали индексировать страницу под разные языки, необходимо, чтобы у страницы были разные url на разных языках по умолчанию:
- site.ru/page (основная, например русская локализация).
- site.ru/en/page (английская локализация).
- site.ru/fr/page (французская локализация).
Сможет ли, будет ли индексировать один и тот же урл в разных версиях?
Самостоятельно - нет, через сайтмап - да, но криво.
Кроме того, гугль все прекрасно расписал и так, зачем эти размышления о вечном?
Похожие вопросы