Организация в Lighttpd переброса на страницу в зависимости от языка пользователя |
[исправить] |
Для организации редиректа на определенную страницу с учетом выбранного в
настройках браузера пользователя языка, в Lighttpd можно использовать модуль
mod_magnet, позволяющий определить логику обработки запроса через простой
скрипт на языке Lua:
lighty.env["uri.path"] = "/en/index.html"
lang = lighty.request['Accept-Language']
if (lang) then
if (string.sub(lang,1,2) == 'ru') then
lighty.env["uri.path"] = "/ru/index.html"
end
end
lighty.env["physical.rel-path"] = lighty.env["uri.path"]
lighty.env["physical.path"] = lighty.env["physical.doc-root"] .. lighty.env["physical.rel-path"]
Для подключения данного скрипта для обработки запроса стартовой страницы ("/")
в файл конфигурации Lighttpd добавляем:
$HTTP["url"] =~ "^/$" {
magnet.attract-physical-path-to = ( "/path/to/your/script.lua" )
}
При обработке запросов mod_magnet кэширует скрипт в предкомпилированном виде и
выполняет его в контексте http-сервера, что минимизирует дополнительную
нагрузку на сервер.
Для Apache гибкую обработку запросов на языке Lua можно реализовать при помощи модуля
mod_lua. Но для
переброса по языку в Apache можно обойтись обычным mod_rewrite, например так:
RewriteCond %{HTTP:Accept-Language} ^ru [NC]
RewriteRule ^$ /index_ru.html [L]
Или более сложный редирект на скрипт с учетом cookie:
# Если выставлена cookie lang, то используем язык из нее:
RewriteCond %{HTTP_COOKIE} ^lang=([a-z]{2,3})[-,;]? [OR]
# Иначе делаем редирект по первому языку, указанному в заголовке Accept-language
RewriteCond %{HTTP:Accept-language} ^([a-z]{2,3})[-,;]?
RewriteRule ^$ /index.php?lang=%1 [L]
|
|
|
|
Раздел: Корень / Администратору / Сетевые сервисы / WWW, Apache httpd / Редирект, mod_rewrite |