Estoy tratando de poner en práctica el cambio de idioma en el .htaccess, y lo único que queda ahora es manejar los clientes que no soportan las cookies. Para hacer eso, debo configurar prefer-language
cuando el usuario hace clic en un enlace con un parámetro language
.Cómo utilizar SetEnv con un parámetro de 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
El problema es con la última línea - El valor siempre se establece en vacío. Funciona si lo codigo, pero no si trato de referirme a una variable. ¿Hay alguna sintaxis especial para referirse a variables de entorno en este contexto, o hay alguna otra forma de establecer prefer-language
?
Editar: Cruz-publicado a Apache users list.
Lo he intentado y no funciona (al menos con esta): RewriteRule^(. *) $ $ 1? [cookie = language:% 1: .example.com: 7200: /, env = prefiera-language:% 1, redirect = permanent] ¿Estoy entendiendo mal algo? – l0b0
No puede establecer una variable de entorno y hacer una redirección al mismo tiempo. Así que en lugar necesita probar la cookie: 'RewriteCond% {HTTP_COOKIE}: | idioma = (en | fr | no) RewriteRule^- [E = preferir-idioma:% 1] (^ [, \]?)' – Gumbo
I No estoy seguro de cómo se realiza la interacción con el cliente, pero lo siguiente no funciona cuando las cookies están deshabilitadas en el cliente, que es lo que estoy tratando de corregir: RewriteEngine En RewriteBase/ RewriteCond% {QUERY_STRING} (?:^| &) language = (en | fr | no) RewriteRule^(. *) $ $ 1? [= Cookie de idioma:% 1: .example.com: 7200: /, = redirigir permanente] RewriteCond% {} HTTP_COOKIE (?:^| [, \]) (. *) Language = RewriteRule^- [E = prefer-language:% 1] – l0b0