RewriteCond适用于IE,但不适用于Firefox或Chrome

时间:2012-12-02 11:37:54

标签: .htaccess mod-rewrite http-accept-language

所以昨天我整天搜索了我的问题的解决方案,发现了相似之处,但没有完全匹配。我尝试写一个.htacces文件,它应该检查浏览器语言,然后将用户重定向到(GERMAN)xyz.de/?lang=de&page=$1或(NONGERMAN)xyz.de/?lang=en& ;页面= $ 1

它应该以浏览器的语言自动加载主页。到目前为止,我得到了它,我不再得到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)

array(2){[“page”] =&gt; string(0)“”[“lang”] =&gt; string(2)“de”}

[GECKO] xyz.de

    var_dump($_GET)

array(0){}

[GECKO] xyz.de/home

    var_dump($_GET)

任何人都知道问题是什么????

array(2){[“lang”] =&gt; string(2)“en”[“page”] =&gt; string(4)“home”}

//更改

感谢Last Post我更改了以下代码:

    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]

现在它没有重定向任何东西,只是当我把/ home或者第二页或其中任何内容放入其中时,它总是用英语加载页面并且它应该将页面重定向到xyz.de/lang=[ACCEPT-LANG]&如果按xyz.de

,则为page = home

1 个答案:

答案 0 :(得分:0)

尝试使用%{HTTP:Accept-Language}代替%{HTTP_ACCEPT_LANGUAGE}

This博文非常有用。