根据位置更改站点地址

时间:2015-02-25 16:11:35

标签: php wordpress geolocation

我的公司有几个不同的域名,最简单的是.com到.ca网站。我们如何创建一个根据用户位置更改域的系统。例如:如果来自美国的访问者在Google上找到我们的.ca网站,我该如何将其重定向到.com?

谢谢!

1 个答案:

答案 0 :(得分:0)

也许使用带有谷歌地图api的html5地理位置和重定向的window.location.replace可能是一个解决方案。

 window.onload = function () {
   if (navigator.geolocation) {
       navigator.geolocation.getCurrentPosition(fnPosition);
   }
}
function fnPosition(position) {
   var lat = position.coords.latitude;
   var long = position.coords.longitude;
   checkCountry(lat,long);
}

function checkCountry(lat,long) {
   var country = {};
   var latlng = new google.maps.LatLng(lat, long);
   geocoder = new google.maps.Geocoder();
   geocoder.geocode({'latLng': latlng}, function(results) {
       if (results[1]) {
           for (var i=0; i<results[0].address_components.length; i++) {
               for (var b=0;b<results[0].address_components[i].types.length;b++) {
                   if (results[0].address_components[i].types[b] == "country") {
                       country =results[0].address_components[i];
                       break;
                   }
               }
           }
       }
       fnRedirect(country);
   });
}

function fnRedirect(country) {
   switch(country.short_name) {
       case 'CA':
 // some window window.location.replace(...)
 break;
 default:
 // whatever
} 
}

我使用此示例从位置here

获取信息

在php中,您可以根据ip获取位置。

$ip = $_SERVER['REMOTE_ADDR'];
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}/json"));
switch ($details->country) {
    case 'CA':
        header('Location: http://www.example.com/');
    exit;
        break;

    default:
        #whatever
        break;
 }

PHP示例here