php – 我如何跟踪访问者的国家和重定向到适当的网站?
我想跟踪访问者的国家,然后将其重定向到我的网站的适当子域,就像谷歌所做的那样…
而且,如果我应该使用任何的,我可以依赖api数据的程度? 我正在使用php ..
下载并安装
Maxmind’s GeoLite Country数据库,其中99.5%的准确性要求.您可以支付升级到付费版本,声称的99.8%的准确性.有关如何使用PHP的数据库有四个选项:
>下载CSV文件并将其导入到您选择的SQL数据库中.这是最慢的选择,并且有一个丑陋的API.我不会推荐它,但它包括为了完整性. 所有这些选项都有一个获取国家/地区代码的方法.我不会包括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请求,因此不是最佳的.更好的方法是在.htaccess文件中使用Apache模块进行重写: 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做的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |