让我解释一下这个问题。我们有一个2种语言的网站:fr& nl(荷兰语)。
当您抵达我们的网站时,您将登陆www.domain.be进行重定向 如果你的浏览器语言,你(如下面的代码所示)到荷兰语版本 设置为'nl'并且如果设置为'en'(因为荷兰人经常使用这种语言进行浏览)或留在www.domain.be / fr.domain.be(这两个网址都可以调用网站 - fr ...一个更响应nl ... one)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteRule ^$ http://nl.domain.be/ [L,R]
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ http://nl.domain.be/ [L,R]
</IfModule>
在网站上,如果您想要访问fr.domain.be或nl.domain.be,可以通过点击2个链接(位于右上角)来选择。 当您单击其中一个链接时,即使您想要转到fr部分(在荷兰语上导航时),htaccess也会重定向您,而在nl部分上也是如此。
我该如何解决?我希望htaccess只在您第一次访问网站时重定向您,然后停用并允许用户选择他的语言。
你能帮帮我吗?我已经两天了......答案 0 :(得分:1)
您只是重定向网站基础/
,因此直接切换到其他网页应该不是问题。
手动切换时,你不能只使用假的索引页吗?像http://nl.domain.be/index
一样答案 1 :(得分:0)
您可以为规则集创建多个条件,这样您就可以添加一个aditional检查,指出只有当您的HTTP_REFERER与您的域不匹配时才会发生重定向。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Accept-Language} ^nl [NC]
RewriteCond %{HTTP_REFERER} !^*\.domain\.be/ [NC]
RewriteRule ^$ http://nl.domain.be/ [L,R]
RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteCond %{HTTP_REFERER} !^*\.domain\.be/ [NC]
RewriteRule ^$ http://nl.domain.be/ [L,R]
</IfModule>
这个!当你的HTTP_REFERER与url模式不匹配时,就是说“(通配符).domain.be”。
这将阻止规则在当前位于您的网站上并尝试更改语言时运行。
注意:我没有在apache框附近进行测试,所以我的语法可能会关闭,但这应该让你走上正确的道路。