多语言的网站如何根据用户ip来访问不同语言的网站?

问题:

我们公司的网站xxx.com
要分成中国版和海外版
根据不同的ip默认进入不同域名
xxx.com/cn:中国ip(中国大陆、港澳台)
xxx.com/en:非中国ip

然后网站的底部也提供给用户切换地区和语言,用户切换后,页面刷新,访问首页

请问这个需求怎么做呢?
php需要做什么?前端需要做什么?nginx方面需要做什么?

新手求教了。

阅读 10.2k
7 个回答

全部php,全部放进xxx.com这个域名,然后

  1. 获取访问ip
  2. 通过第三方api或者买ip库判断是不是海外的
  3. 根据判断结果,在代码中使用header(),即用301或302重定向

访问的网站的时候,先向后台发送一个请求,php接收到请求可以拿到ip,根据ip去第三库判断是否是国内的,然后返回一个结果,前端拿到结果,跳不同的域名。(当你访问element官网的时候,它也会自动判断是否是大陆用户)

php 获取用户的ip,并判断当前访问的域名,再判断是否需要跳转到对应语言的域名。

IP不太好判断吧。可以从浏览器UA中获取用户使用的语言。

阿里云上域名解析支持选择解析线路,可以支持不通区域访问,国内一个ip,国外一个ip

nginx里面要怎么配置xxx.com/en和xxx.com/cn这样的url呢?

可以试试Nginx GeoIP模块

配置如下

http {
    geoip_country         GeoIP.dat;
    geoip_city            GeoLiteCity.dat;
    geoip_proxy           192.168.100.0/24;
    geoip_proxy           2001:0db8::/32;
    geoip_proxy_recursive on;

配置好后可以直接获得国家和城市变量

$geoip_country_code
国家代码,如: “CN”, “US”.

$geoip_city
城市名如: “Moscow”, “Washington”.


$geoip_latitude
纬度.
$geoip_longitude
经度.

这些信息可以直接传给后端的php程序

官网
http://nginx.org/en/docs/http...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题