- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想跟踪访问者所在的国家/地区,然后将他们重定向到我网站的适当子域,就像 google 所做的那样...
如果我应该使用 api 的数据,我可以在多大程度上依赖它?..
我正在使用 php..
最佳答案
下载并安装 Maxmind's GeoLite Country数据库,声称准确率为 99.5%。您可以付费升级到付费版本,并声称其准确率为 99.8%。关于如何从 PHP 使用数据库,有四个选项:
所有这些选项都有一个获取国家代码的方法。我不会包括 SQL 选项,但你可以获得 more info here .
纯 PHP4:
include("geoip.inc");
$gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);
$code = geoip_country_code_by_addr($gi, "24.24.24.24");
PECL PHP 扩展:
$code = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
Apache 模块:
$code = apache_note("GEOIP_COUNTRY_CODE");
然后您可以使用 HTTP 重定向根据这些代码进行重定向:
$redirect = array("AU" => "http://australia.example.com", "NZ" => "http://newzealand.example.com")
$url = $redirect[$code]
header("Location: $url");
然而,这会导致两个 HTTP 请求,因此不是最优的。更好的方法是使用 Apache 模块进行重写,在你的 .htaccess
文件中:
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat
# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA
RewriteRule ^(.*)$ http://www.canada.com$1 [L]
# Redirect multiple countries to a single page
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$
RewriteRule ^(.*)$ http://www.northamerica.com$1 [L]
当然,可以说更好的方法是让其他人在 DNS 级别为您做这件事。快速搜索显示 this company ,(我不知道它们好不好)毫无疑问还有其他的。 Google 就是这样做的。
关于php - 我如何跟踪访问者的国家并将他们重定向到适当的站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2832380/
这段代码在 Java 中的等价物是什么?我放了一部分,我对 I/O 部分感兴趣: int fd = open(FILE_NAME, O_WRONLY); int ret = 0; if (fd =
我正在尝试将维度为 d1,d2,d3 的张量 M[a1,a2,a3] reshape 为维度为 d2, d1*d3 的矩阵 M[a2,a1*a3]。我试过 M.reshape(d2,d1*d3) 但是
我是一名优秀的程序员,十分优秀!