我試圖在.htaccess中實現語言切換,現在唯一剩下的就是處理不支持cookie的客戶端。要做到這一點,當用戶點擊帶有language
參數的鏈接時,我必須設置prefer-language
。如何通過URL參數使用SetEnv
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
問題是與最後一行 - 該值始終設置爲空。它工作,如果我硬編碼,但不是如果我嘗試引用一個變量。在這種情況下是否有一些特殊的語法來引用環境變量,或者有其他方法可以設置prefer-language
?
編輯:跨貼到Apache users list。
我試了一下,這是行不通的(至少在這):RewriteRule ^(。*)$ $ 1? [cookie = language:%1:.example.com:7200:/,env = prefer-language:%1,redirect = permanent]我誤解了什麼嗎? – l0b0 2009-08-14 22:08:40
您不能設置環境變量並同時執行重定向。所以你需要測試cookie:'RewriteCond%{HTTP_COOKIE}(?:^ | [,\])language =(en | fr | no)RewriteRule^- [E = prefer-language:%1]' – Gumbo 2009-08-14 22:54:14
I不知道如何與客戶端進行交互,但在客戶端禁用cookie時,以下情況不起作用,這正是我想要解決的問題: RewriteEngine在 RewriteBase/ RewriteCond%{QUERY_STRING} (?:^ |&)language =(en | fr | no) RewriteRule ^(。*)$ $ 1? [cookie = language:%1:.example.com:7200:/,redirect = permanent] RewriteRule^- [E = prefer-language:%1] – l0b0 2009-08-15 09:11:51