2013-07-02 2 views
1

Я не являюсь мастером Apache/.htaccess.Язык (сохранен в cookie), определенная навигация

Для URL: base-url/destination/, мне нужно показать страницу на том языке, который был сохранен в файле cookie. Если ни один язык, который мы не сохранили в файле cookie, или если файл cookie отсутствует, мне нужно показать страницу так же, как и язык браузера.

Теперь для того, чтобы достичь этого, я написал правила в .htaccess файле как:

RewriteCond %{REQUEST_URI} /destination/$ 
RewriteCond %{HTTP_COOKIE} language_uiAAA(\w{3}).*?BBB 
RewriteRule ^(.*)\$ $httpbase/%1/destination.html 

Это правильно показывает страницу на языке, сохраненной в куки.

Но, меня попросили написать правила, используя SetEnvIf, SetEnvIfNoCase or prefer-language.

Таким образом, я гугл и написал эти правила:

SetEnvIf ^Cookie$ "(.+)" HTTP_MY_COOKIE=$1 
SetEnvIf HTTP_MY_COOKIE ".+language_uiAAA(.+?)BBB.+" saved_language=$1 
SetEnvIf saved_language "^(.+)$" prefer-language=$1 

Но эти правила не работают. Пожалуйста помоги.

ИЛИ

Пожалуйста, предложить лучший способ.

+0

Почему вы отметите этот "Perl"? – innaM

+0

Я использовал Perl для записи этого файла '.htaccess'. Я думал, у великих монахов Перла может быть ответ на это! –

ответ

1

Voila!

Done !!

Вот код:

SetEnvIf ^Cookie$ "(.+)" HTTP_MY_COOKIE=$1 
SetEnvIf HTTP_MY_COOKIE ".+language_uiAAA(.+?)BBB.+" saved_language=$1 
SetEnvIf saved_language "^(\w{2}).+$" prefer-language=$1 
SetEnvIf REDIRECT_prefer-language (.+) prefer-language=$1 
Смежные вопросы