我想跟踪访问者的国家/地区,然后将其重定向到我网站的相应子域名,就像google所做的那样...
如果我应该使用任何程度,我可以在多大程度上依赖api的数据?
我正在使用PHP ..
fma*_*ark 17
下载并安装Maxmind的GeoLite国家数据库,该数据库的准确率为99.5%.您可以付费升级到付费版本,声称其准确率为99.8%.关于如何从PHP使用数据库有四个选项:
所有这些选项都有一种获取国家/地区代码的方法.我不会包含SQL选项,但您可以在此处获取更多信息.
纯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");
Run Code Online (Sandbox Code Playgroud)
PECL PHP扩展:
$code = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
Run Code Online (Sandbox Code Playgroud)
Apache模块:
$code = apache_note("GEOIP_COUNTRY_CODE");
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用HTTP重定向根据这些代码重定向:
$redirect = array("AU" => "http://australia.example.com", "NZ" => "http://newzealand.example.com")
$url = $redirect[$code]
header("Location: $url");
Run Code Online (Sandbox Code Playgroud)
然而,这会导致两个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]
Run Code Online (Sandbox Code Playgroud)
当然,一个可以说是更好的方法是让其他人在DNS级别为你做这件事.快速搜索显示这家公司,(我不知道他们是否好),毫无疑问还有其他公司.谷歌就是这样做的.
| 归档时间: |
|
| 查看次数: |
9770 次 |
| 最近记录: |