Эта статья рассказывает, как на веб-сервере Apache, на котором представлен контент на различных языках, настроить автоматическое перенаправление пользователя на раздел сайта на его языке, точнее на язык, выбранный в его браузере.

Для этого есть простой способ, не требующий программирования — достаточно скопировать несколько строк в файл .htaccess. Далее приведены примеры кода для разных языков

Почему редирект именно по языку браузера

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

Автоматическое определение языка по IP адресу

Этот подход основан на том, что каждый IP адрес соответствует определённой стране или региону. И определив, что пользователь зашёл, например, из Германии, сайт мог бы открыть пользователю на раздел на немецком языке.

Здесь есть несколько «но»:

  • что если это страна, в которой люди говорят на различных языках, например, Бельгия или Швейцария?
  • что если пользователь заходит не из своей страны (находится в командировке или на отдыхе), например, француз находится в Таиланде?

В этом варианте требуется программирование для связывания IP адреса и языка, например, на PHP.

Выбор языка пользователем и сохранение в cookies

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

И здесь тоже требуется программирование.

Автоматическое определение языка по настройкам браузера

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

Поэтому пользователь сразу получит контент на понятном ему языке. И этот подход не требует программирования.

Поэтому этот вариант хорошо решает задачу пользователя и в то же время наиболее прост в реализации.

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

Для настройки нужно скопировать условия и правила редиректа в раздел ReWrite, например, эти строки проверяют, что предпочитаемым является русский язык и, соответственно, перенаправляют браузер пользователя в раздел /ru/:

RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^$ http://%{HTTP_HOST}/ru/ [L,R=301]

Подробнее см. документацию по ссылкам в конце статьи.

Аналогично можно добавить и другие языки, а в конце указать язык по умолчанию, в итоге полностью настройка модуля Rewrite в файле .htaccess будет прописана так::

RewriteEngine On

# немецкий язык
RewriteCond %{HTTP:Accept-Language} ^de [NC]
RewriteRule ^$ http://%{HTTP_HOST}/de/ [L,R=301]
# испанский язык
RewriteCond %{HTTP:Accept-Language} ^es [NC]
RewriteRule ^$ http://%{HTTP_HOST}/es/ [L,R=301]
# французский язык
RewriteCond %{HTTP:Accept-Language} ^fr [NC]
RewriteRule ^$ http://%{HTTP_HOST}/fr/ [L,R=301]
# казахский язык
RewriteCond %{HTTP:Accept-Language} ^kk [NC]
RewriteRule ^$ http://%{HTTP_HOST}/kk/ [L,R=301]
# русский язык
RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^$ http://%{HTTP_HOST}/ru/ [L,R=301]
# шведский язык
RewriteCond %{HTTP:Accept-Language} ^sv [NC]
RewriteRule ^$ http://%{HTTP_HOST}/sv/ [L,R=301]
# по умолчанию английский язык
RewriteRule ^$ http://%{HTTP_HOST}/en/ [L,R=301]

Как всегда, при внесении изменений рекомендуется сделать резервную копию файла. На всякий случай.

Измененный файл .htaccess нужно выгрузить на сайт с помощью FTP/SFTP клиента (Far Manager, FileZilla, PSFTP).

Как проверить настройки htaccess

Во-первых, можно проверить файл на синтаксические ошибки с помощью специального онлайн-сервиса.

А чтобы проверить в работе, нужно открыть в браузере веб-сайт (его начальную страницу), каждый раз с другим языком в настройках, при этом браузер должен переходить на соответствующий раздел сайта.

Как добавить другие языки

Чтобы добавить ещё языки, нужно для каждого добавить две строки – одну с условием RewriteCond, вторую с перенаправлением RewriteRule, аналогично тому, как это показано во фрагменте выше.

Язык указывается двухбуквенным сокращением. Для многих языков это обозначение не совпадает с двухбуквенным обозначением страны, например, для датского, казахского, шведского, украинского и многих других. Подробнее см. ссылку в конце статьи.

Заключение

Настройки ReWrite в файле .htaccess позволяют за несколько минут без программирования, простым копированием строк, реализовать автоматическое перенаправление по языку, выбранному в браузере пользователя.

Узнать больше

Apache Module mod_rewrite

Apache: Content Negotiation

Коды языков

Настроить редирект по языку браузера в htaccess

Добавить комментарий

Ваш адрес email не будет опубликован.