分类
日历
统计
链接
其他

13 Nov.2008

限制某语言访问网站 不指定

作者: dreamboymt   分类:WEB服务器   出处:本站原创       | |

前阵子在做个项目时,因为网站是有两个版本,一个是英文,一个是中文,显然,英文主要做国外市场,中文做国内市场。现在要求是国内的用户访问就访问中文站,国外用户访问就访问英文站,而且英文站不想让国内人访问。

原先想起这问题,就想到用IP筛选,但一想那不是每个访问都是查一遍IP数据库。这个方法不太好。然后就想起了Google,每个区域的用户访问同一个页面时,显示不同的语言,而页面又是同一个。那很显然是用语言还判断的。这一想,这方法应该比较实际。虽然在中国地区不是全部都用中文系统,但这也筛选了90%以上了吧。也算是达到目的。

实现方法很方便,只面修改 httpd.conf 即可,增加代码如下:

LoadModule setenvif_module modules/mod_setenvif.so
# 需要检查一下,是否开启 setenvif_module 模块

SetEnvIf ACCEPT-LANGUAGE ^zh-cn let_me_in
# 判断为简体中文的条件,如想设是全部中文,可改为 ^zh

SetEnvIfNoCase Referer "^http://(.*).taobao.com/" local_ref=1

# 此条件是允许某站的外链,因为即是同产品,总有些图片想直接使用,以免也被拒绝

<Directory "C:/yourroot">
Order deny,allow
Deny from env=let_me_in
Allow from env=local_ref
# Allow from 202.103.156.156

# 此行意为让某IP的用户可以访问
</Directory>

如果没有修改httpd.conf的权限,或是一些其它控制,想在程序里实行,PHP代码如下:

$NOTCHINESE=FALSE;
if (substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2)!="zh") $NOTCHINESE=TRUE;

有了这行变量,下面的方法就看你自己想做什么都行了,可以让他转其它站,也可显示其它语言等。

时间:15:57 评论(1) 引用(0) 阅读(2922) Tags:
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮
OpenID登入 权限选项 表情