J'essaie d'implémenter le changement de langue dans .htaccess, et il ne me reste plus qu'à gérer les clients qui ne supportent pas les cookies. Pour ce faire, je dois définir prefer-language
lorsque l'utilisateur clique sur un lien avec un paramètre language
.Comment utiliser SetEnv avec un paramètre d'URL
RewriteEngine On
RewriteBase/
RewriteCond %{QUERY_STRING} (?:^|&)language=(en|fr|no)
RewriteRule ^(.*)$ $1? [cookie=language:%1:.example.com,env=language:%1,R]
SetEnv prefer-language $language
Le problème est avec la dernière ligne - La valeur est toujours définie sur vide. Cela fonctionne si je le code en dur, mais pas si j'essaie de me référer à une variable. Existe-t-il une syntaxe spéciale pour faire référence aux variables d'environnement dans ce contexte ou existe-t-il un autre moyen de définir prefer-language
?
Édition: Publié au Apache users list.
Je l'ai essayé, et ça ne fonctionne pas (au moins avec ce): RewriteRule^(. *) $ $ 1? [cookie = langue:% 1: .example.com: 7200: /, env = prefer-language:% 1, redirection = permanent] Suis-je en train de mal comprendre quelque chose? – l0b0
Vous ne pouvez pas définir une variable d'environnement et effectuer une redirection en même temps. Vous avez donc besoin de tester le cookie: 'RewriteCond% {HTTP_COOKIE} (?:^| [, \]) Language = (fr | fr | no) RewriteRule^- [E = prefer-language:% 1]' – Gumbo
I Je ne suis pas sûr comment l'interaction avec le client est faite, mais ce qui suit ne fonctionne pas lorsque les cookies sont désactivés sur le client, ce que j'essaie de résoudre: RewriteEngine sur RewriteBase/ RewriteCond% {QUERY_STRING} (?:^| &) language = (en | fr | no) RewriteRule^(. *) $ $ 1? [cookie = langue:% 1: .example.com: 7200: /, redirect = permanent] RewriteCond% {HTTP_COOKIE} (?:^| [, \]) language = (. *) RewriteRule^- [E = prefer-language:% 1] – l0b0