Ich versuche, Sprachumschaltung in. Htaccess zu implementieren, und das einzige, was jetzt noch ist, ist die Behandlung von Clients, die keine Cookies unterstützen. Um dies zu tun, muss ich prefer-language
setzen, wenn der Benutzer auf einen Link mit einem language
Parameter klickt.Wie verwende ich SetEnv mit einem URL-Parameter
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
Das Problem ist mit der letzten Zeile - Der Wert wird immer auf leer gesetzt. Es funktioniert, wenn ich es fest codiere, aber nicht, wenn ich versuche, auf eine Variable zu verweisen. Gibt es eine spezielle Syntax, um in diesem Kontext auf Umgebungsvariablen zu verweisen, oder gibt es eine andere Möglichkeit, prefer-language
zu setzen?
Bearbeiten: Cross-Posted zu Apache users list.
ich es ausprobiert habe, und es funktioniert nicht (zumindest mit diesem): RewriteRule^(. *) $ $ 1? [cookie = Sprache:% 1: .example.com: 7200: /, env = prefer-Sprache:% 1, redirect = permanent] Missverständnis ich etwas? – l0b0
Sie können keine Umgebungsvariable festlegen und gleichzeitig eine Umleitung ausführen. Sie müssen also eher den Cookie testen: 'RewriteCond% {HTTP_COOKIE} (?:^| [, \]) Language = (en | fr | no) RewriteRule^- [E = prefer-language:% 1]' – Gumbo
I bin nicht sicher, wie die Interaktion mit dem Client gemacht wird, aber das Folgende funktioniert nicht, wenn Cookies auf dem Client deaktiviert sind, was ich zu beheben versuche: RewriteEngine On RewriteBase/ RewriteCond% {QUERY_STRING} (?:^| &) language = (en | fr | no) RewriteRule^(. *) $ $ 1? [cookie = Sprache:% 1: .example.com: 7200: /, redirect = permanent] RewriteCond% {HTTP_COOKIE} (?:^| [, \]) Sprache = (. *) RewriteRule^- [E = prefer-language:% 1] – l0b0