
最近我开了一个新网站,Gearor.com,以报导科技新闻为主。我为这个网站设计了中文(cn.gearor.com)及英文版本,所以我希望做到,当用户访问时,判断用户是否使用中文浏览器,若是便将用户带到中文页面。
一开头,我直观地在主页将所有中文浏览器转到中文页面。这样做有一个问题:就是在中文页面内,我放置了一条返回英文页面的连结,若中文用户想看英文内容,可按此连结。当我加入转向程式,即使点击了这条连结,还是会被带回到中文页面,变成中文用户到不了英文的主页,这是不能接受的。
解决的方法也不难,只要在转向程式加入判断,不对来源网站为本站的用户进行转向。问题是要实现这个方法却不容易,我试过JavaScript,亦试过用SESSION的方法,都未能满足。最后我将问题放到StockOverFlow上,终于找到满意的解决方法。顺带一提,StockOverFlow真是一个非常棒的网站,那里有大量优秀的程式员,而且大家都很乐意为你解答疑问。以下是我修改过的程式,目前在Gearor.com上使用:
if (!preg_match('%gearor.com%i', $_SERVER['HTTP_REFERER']))
{
if (!preg_match('%cn.gearor.com%i', $_SERVER['HTTP_REFERER']))
{
if (preg_match('/zh-cn/i', $_SERVER['HTTP_ACCEPT_LANGUAGE']))
wp_redirect('http://cn.gearor.com');
}
}
如果你也在设计多国语言网站,或许这段程式也能帮到你,当然,若你有更好的方法,欢迎与我分享。





通告: Zack Live