Здравствуйте! У меня возник вопрос, касающийся организации смены языковой версии сайта. Например, когда я нахожусь на странице новостей и переключаю язык, я остаюсь на том же URL-адресе, но страница отображается на другом языке. Как это реализуется на техническом уровне? Я предположил, что с помощью JavaScript при выборе нового языка отправляется запрос в контроллер (LanguageController), который выполняет редирект на текущую страницу, при этом в куки сохраняется выбранный язык ($_COOKIE['lang']['en']). В NewsController с помощью SQL-запроса извлекается новость, используя условие WHERE lang='en' и дополнительное условие AND url='текущий урл, на который нажали для перехода'. Однако меня беспокоит, что я не могу изменить это условие при смене языка, если я уже нахожусь на странице конкретной новости. Исходя из этого, можно ли считать нормальным, что разный язык может отображаться по одному и тому же URL: site.ru/news/novost-takaya-to? Как это может повлиять на работу поисковиков? Будут ли они индексировать один и тот же URL-с адрес в разных языковых версиях?
Использование одного и того же 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 (французская локализация).
Сможет ли, будет ли индексировать один и тот же урл в разных версиях?Самостоятельно - нет, через сайтмап - да, но криво.
Кроме того, гугль все прекрасно расписал и так, зачем эти размышления о вечном?