.htaccess'te dil geçişini uygulamaya çalışıyorum ve şimdi bıraktığım tek şey, çerezleri desteklemeyen istemcileri işlemektir. Bunu yapmak için, kullanıcı language
parametresiyle bir bağlantıyı tıkladığında prefer-language
ayarlamalıyım.SetEnv'yi bir URL parametresiyle birlikte kullanma
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
Sorun, son satırda - Değer her zaman boş olarak ayarlanmıştır. Eğer kodu değiştirirsem çalışır, ama bir değişkene başvurmaya çalışırsam olmaz. Bu bağlamda ortam değişkenlerine başvurmak için özel bir sözdizimi var mı, yoksa prefer-language
'u ayarlamanın başka bir yolu var mı?
Düzenleme: Apache users list için postalanan.
ve çalışmaz: Geçerli URL'ye referer dan sadece kopya
language
parametre beri değişti değilse, dil seçimi daha basit bir tür): RewriteRule^(. *) $ 1 $? [cookie = dil:% 1: .example.com: 7200: /, env = tercih dili:% 1, yönlendirme = kalıcı] Bir şeyi yanlış anlamış mıyım? – l0b0Bir ortam değişkeni ayarlayamaz ve aynı anda bir yönlendirme gerçekleştiremezsiniz. Bu yüzden cookie'yi test etmeniz gerekiyor: 'RewriteCond% {HTTP_COOKIE} (?:^| [, \]) Language = (en | fr | no) RewriteRule^- [E = tercih dili:% 1]' – Gumbo
I İstemci ile etkileşimin nasıl yapıldığından emin değilim, ancak istemcide çerezler devre dışı bırakıldığında aşağıdakiler işe yaramaz, bu da düzeltmeye çalıştığım şeydir: RewriteEngine On RewriteBase/ RewriteCond% {QUERY_STRING} (?:^| &) language = (tr | no | no) RewriteRule^(. *) $ 1 $? [cookie = dil:% 1: .example.com: 7200: /, yönlendirme = kalıcı] RewriteCond% {HTTP_COOKIE} (?:^| [, \]) language = (. *) RewriteRule^- [E = tercih dili:% 1] – l0b0