2012-12-02 285 views
0

所以我昨天搜索了整個一天的問題的解決方案,發現相似之處,但沒有完全匹配。我嘗試編寫一個.htacces文件,該文件應該檢查​​瀏覽器語言,然後將用戶重定向到(德語)xyz.de/?lang=de & page = $ 1或(NONGERMAN)xyz.de/?lang=en & page = $ 1RewriteCond適用於IE瀏覽器,但不適用於Firefox或Chrome

它應該以瀏覽器的語言自動加載主頁。到目前爲止,我沒有再收到500個錯誤,它的工作很好,IE,並以正確的語言加載頁面,這給我留下了很多印象。但在Firefox或Chrome中,它不會顯示語言和頁面;如果我var_dump($ _ GET)我什麼都沒有。

htaccess的

RewriteEngine on 
    RewriteCond %{HTTP_ACCEPT_LANGUAGE} ^(de|de-at|de-li|de-lu|de-ch) [NC] 
    RewriteRule ^([^./]{3}[^.]*)$ /index.php?lang=de&page=$1 [QSA,L] 
    RewriteCond %{HTTP_ACCEPT_LANGUAGE} !^(de|de-at|de-li|de-lu|de-ch) [NC] 
    RewriteRule ^([^./]{3}[^.]*)$ /index.php?lang=en&page=$1 [QSA,L]<i> 

[IE9] xyz.de

var_dump($_GET) 

陣列(2){[ 「網頁」] =>串(0) 「」[ 「郎」] = >串(2) 「的」}

[GECKO] xyz.de

var_dump($_GET) 

陣列(0){}

[GECKO] xyz.de/home

var_dump($_GET) 

任何人的想法是什麼問題????

陣列(2){[ 「郎」] =>串(2) 「EN」[ 「網頁」] =>串(4)的 「家」}

//更改

由於到最後發表我改變了代碼如下:

RewriteCond %{HTTP:ACCEPT_LANGUAGE} !^(de) [NC] 
    RewriteRule ^([^./]{3}[^.]*)$ /index.php?page=$1&lang=en [QSA,L] 

    RewriteRule ^([^./]{3}[^.]*)$ /index.php?page=$1&lang=de [QSA,L] 

現在沒有重定向,只是當我把/家庭奧德secondpage或者它什麼都,它的英文總是加載頁面,它應該重定向頁面to xyz.de/lang=[ACCEPT-LANG] & page = home如果您按xyz.de

+0

您是否看過每個您測試過的瀏覽器發送的實際HTTP頭?他們必須是失敗的原因。 – Perleone

+0

我以爲,我希望這裏有人,曾經有過同樣的問題。頭definitly發出接受語言: 鉻: 接受語言:EN-US,EN; Q = 0.8 火狐: 接受語言:EN-US,EN; Q = 0.5 它看起來像FF和Chrome不會將重寫寫入瀏覽器字段,但不會將參數寫入$ _GET // Sry中,以便我的英語順便說一句。 –

+0

您可以安全地刪除第二個'RewriteCond'。如果第一個匹配,則重寫在第一個「重寫規則」處終止。如果不是,你想要趕上所有的請求... – arkascha

回答

0

嘗試使用%{HTTP:Accept-Language}而不是%{HTTP_ACCEPT_LANGUAGE}

This博客文章非常有用。

相關問題