Рейтинг:0

Apache 2.4: как перенаправить пользователя в зависимости от языковых настроек

флаг jp

У меня многоязычный статический сайт. Сайт структурирован таким образом, что весь контент по умолчанию на английском языке, поэтому контент по умолчанию находится в разделе /. Например:

Путь: Содержание:
/               Дом
/contact.html Контактная страница
/services.html Службы
/about.html О нас

И затем есть подпапка для каждого поддерживаемого языка. Например, «de» для немецкого языка, «da» для датского и т. д. Все локализованное содержимое будет изменено в размере во вложенной папке для соответствующего языка.

Таким образом, датский контент будет структурирован следующим образом:

Путь: Содержание:
/да/ Главная
/da/contact.html Контактная страница
/da/services.html Службы
/da/about.html О нас

И так же для других языков.

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

Поэтому я полагаю, что мне придется позволить apache сделать эту часть.

Я использую Апач 2.4.

Тогда мой вопрос заключается в том, как мне настроить виртуальный хост Apache таким образом, чтобы пользователи, запрашивающие /, были перенаправлены на /da/, если их предпочтительный язык — датский, на /de/, если их предпочтительный язык — немецкий, и просто получить / as по умолчанию, если английский или любой другой язык является предпочтительным языком? Аналогичным образом, если пользователь запрашивает /foo.html, он будет перенаправлен на /$LANG/foo.html, где $LANG — его предпочтительный язык (если этот язык находится в списке поддерживаемых языков).

Языковые/локальные настройки пользователя будут определяться с помощью заголовка Accept-Language клиента.

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

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

Итак, я попробовал это. Это не устанавливает файл cookie, но срабатывает только на главной странице (/). Он просто проверяет, есть ли датский язык в Accept-Language. Но не независимо от того, предпочитается датский или нет. Кроме того, он не очень хорошо поддерживает несколько языков. Например, предположим, что у нас есть пользователь, который предпочитает немецкий язык, но использует датский как второй язык. Здесь они получат датский, а не немецкий.

RewriteEngine включен
RewriteCond %{HTTP:Accept-Language} (da) [NC]
RewriteCond %{REQUEST_URI} "^/$"
RewriteRule ^(.*)$ https://%{ИМЯ_СЕРВЕРА}/da [R=303,NC,L]   

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.