admin管理员组

文章数量:1181432

How to redirect user visiting my sites to location specific sites using the IP Address.
I have 3 location specific sites.
1. Europe.
2. US.
3. Asia.
In short I wanted to find the location of the client using his IP Address. The solution needs to use Google APIs.

How to redirect user visiting my sites to location specific sites using the IP Address.
I have 3 location specific sites.
1. Europe.
2. US.
3. Asia.
In short I wanted to find the location of the client using his IP Address. The solution needs to use Google APIs.

Share Improve this question edited Feb 12, 2016 at 17:52 Niccolò Guidi 1952 silver badges15 bronze badges asked Dec 13, 2012 at 10:22 Vishnudev KVishnudev K 2,9343 gold badges28 silver badges43 bronze badges 9
  • 1 You'll need to give us more info on that. What server you using. From where to where you want to redirect. You want to redirect according to IP of by browser preferences, .... – matejv Commented Dec 13, 2012 at 10:24
  • Getting the user IP and then redirecting since you din't include any server side language. Use google for such silly things. – Shyam K Commented Dec 13, 2012 at 10:28
  • Do you really need to redirect with javascript? Wouldn't it be better to redirect on server side? – matejv Commented Dec 13, 2012 at 10:29
  • I'm planning to redirect using javascript. I tried googling and ended up google.load for location. all the examples are about showing location specific maps. nowhere I got example of getting location. – Vishnudev K Commented Dec 13, 2012 at 10:32
  • I am working on fatwire my javascript knowledge is limited. I thought javascript provides a feasible solution in this senario. correct me if i'm wrong – Vishnudev K Commented Dec 13, 2012 at 10:36
 |  Show 4 more comments

5 Answers 5

Reset to default 13

I got the solution using "google.loader.ClientLocation"
here is the code for that if somebody needs it.

Check this JSFiddle

http://jsfiddle.net/kvishnudev/7Ut65/1/

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
<head>
    <title>Get web visitor's location</title>
    <meta name="robots" value="none" />
</head>
<body>
<div id="yourinfo"></div>
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAAp04yNttlQq-7b4aZI_jL5hQYPm-xtd00hTQOC0OXpAMO40FHAxQMnH50uBbWoKVHwgpklyirDEregg"></script>
<script type="text/javascript">
var Continent = {"AD":"Europe","AE":"Asia","AF":"Asia","AG":"North America","AI":"North America","AL":"Europe","AM":"Asia","AN":"North America","AO":"Africa","AQ":"Antarctica","AR":"South America","AS":"Australia","AT":"Europe","AU":"Australia","AW":"North America","AZ":"Asia","BA":"Europe","BB":"North America","BD":"Asia","BE":"Europe","BF":"Africa","BG":"Europe","BH":"Asia","BI":"Africa","BJ":"Africa","BM":"North America","BN":"Asia","BO":"South America","BR":"South America","BS":"North America","BT":"Asia","BW":"Africa","BY":"Europe","BZ":"North America","CA":"North America","CC":"Asia","CD":"Africa","CF":"Africa","CG":"Africa","CH":"Europe","CI":"Africa","CK":"Australia","CL":"South America","CM":"Africa","CN":"Asia","CO":"South America","CR":"North America","CU":"North America","CV":"Africa","CX":"Asia","CY":"Asia","CZ":"Europe","DE":"Europe","DJ":"Africa","DK":"Europe","DM":"North America","DO":"North America","DZ":"Africa","EC":"South America","EE":"Europe","EG":"Africa","EH":"Africa","ER":"Africa","ES":"Europe","ET":"Africa","FI":"Europe","FJ":"Australia","FK":"South America","FM":"Australia","FO":"Europe","FR":"Europe","GA":"Africa","GB":"Europe","GD":"North America","GE":"Asia","GF":"South America","GG":"Europe","GH":"Africa","GI":"Europe","GL":"North America","GM":"Africa","GN":"Africa","GP":"North America","GQ":"Africa","GR":"Europe","GS":"Antarctica","GT":"North America","GU":"Australia","GW":"Africa","GY":"South America","HK":"Asia","HN":"North America","HR":"Europe","HT":"North America","HU":"Europe","ID":"Asia","IE":"Europe","IL":"Asia","IM":"Europe","IN":"Asia","IO":"Asia","IQ":"Asia","IR":"Asia","IS":"Europe","IT":"Europe","JE":"Europe","JM":"North America","JO":"Asia","JP":"Asia","KE":"Africa","KG":"Asia","KH":"Asia","KI":"Australia","KM":"Africa","KN":"North America","KP":"Asia","KR":"Asia","KW":"Asia","KY":"North America","KZ":"Asia","LA":"Asia","LB":"Asia","LC":"North America","LI":"Europe","LK":"Asia","LR":"Africa","LS":"Africa","LT":"Europe","LU":"Europe","LV":"Europe","LY":"Africa","MA":"Africa","MC":"Europe","MD":"Europe","ME":"Europe","MG":"Africa","MH":"Australia","MK":"Europe","ML":"Africa","MM":"Asia","MN":"Asia","MO":"Asia","MP":"Australia","MQ":"North America","MR":"Africa","MS":"North America","MT":"Europe","MU":"Africa","MV":"Asia","MW":"Africa","MX":"North America","MY":"Asia","MZ":"Africa","NA":"Africa","NC":"Australia","NE":"Africa","NF":"Australia","NG":"Africa","NI":"North America","NL":"Europe","NO":"Europe","NP":"Asia","NR":"Australia","NU":"Australia","NZ":"Australia","OM":"Asia","PA":"North America","PE":"South America","PF":"Australia","PG":"Australia","PH":"Asia","PK":"Asia","PL":"Europe","PM":"North America","PN":"Australia","PR":"North America","PS":"Asia","PT":"Europe","PW":"Australia","PY":"South America","QA":"Asia","RE":"Africa","RO":"Europe","RS":"Europe","RU":"Europe","RW":"Africa","SA":"Asia","SB":"Australia","SC":"Africa","SD":"Africa","SE":"Europe","SG":"Asia","SH":"Africa","SI":"Europe","SJ":"Europe","SK":"Europe","SL":"Africa","SM":"Europe","SN":"Africa","SO":"Africa","SR":"South America","ST":"Africa","SV":"North America","SY":"Asia","SZ":"Africa","TC":"North America","TD":"Africa","TF":"Antarctica","TG":"Africa","TH":"Asia","TJ":"Asia","TK":"Australia","TM":"Asia","TN":"Africa","TO":"Australia","TR":"Asia","TT":"North America","TV":"Australia","TW":"Asia","TZ":"Africa","UA":"Europe","UG":"Africa","US":"North America","UY":"South America","UZ":"Asia","VC":"North America","VE":"South America","VG":"North America","VI":"North America","VN":"Asia","VU":"Australia","WF":"Australia","WS":"Australia","YE":"Asia","YT":"Africa","ZA":"Africa","ZM":"Africa","ZW":"Africa"};
    if(google.loader.ClientLocation)
    {
        visitor_lat = google.loader.ClientLocation.latitude;
        visitor_lon = google.loader.ClientLocation.longitude;
        visitor_city = google.loader.ClientLocation.address.city;
        visitor_region = google.loader.ClientLocation.address.region;
        visitor_country = google.loader.ClientLocation.address.country;
        visitor_countrycode = google.loader.ClientLocation.address.country_code;
        if(visitor_countrycode!= null)
        {
                var Cont = Continent[visitor_countrycode];
                //alert(Cont);              
        }

        //
        document.getElementById('yourinfo').innerHTML = '<p>Lat/Lon: ' + visitor_lat + ' / ' + visitor_lon + '</p><p>Location: ' + visitor_city + ', ' + visitor_region +', Continent : ' + Cont + ', ' + visitor_country + ' (' + visitor_countrycode + ')</p>';
    }
    else
    {
        document.getElementById('yourinfo').innerHTML = '<p>Whoops!</p>';
    }
</script>
</body>

There are two options:

  1. A backend solution, using Maxmind GeoIP DLL, an IP to country converter: http://dev.maxmind.com/geoip/downloadable.

  2. A frontend solution (The one I know is not free but pretty cheap: http://www.maxmind.com/en/javascript)

Both allow you to transform an IP to country, then you can aggregate country to location.

Once you have the location (Europe, US, Asia) you can then redirect to the appropriate site.

Here is a very simple and effective solution with much less code: this piece of code makes use of the infamous fetch api in javascript to make a request to a third-party url: https://ipinfo.io/json which return a JSON object of the client's details.

you can decide to put this piece of code in a <script> tag in your header or footer. Or maybe in a file that is later imported.

Happy coding!!!

    fetch('https://ipinfo.io/json').then((res) => {
        res.json().then((data) => {         
            if(data.country === "/*Country Code*/"){
                window.location.href = '/*Redirect URL*/';
           }
        });
    });         

Dont know If this answers your problem, I wanted to try this using Python, though its been really long time this Question was posted. just to see If I'm thinking in the right way :)

I've a weblog, with most frequent visitors from an IP, I've checked the IP and it belongs to a Consulting company. Finally after through analysis I've 3 different IPs of a Educational Institute, Product Dev company & another consulting company constituting about ~30% each. I wanted to deploy a User specific Page and test it. I was not able to do it for some reasons. Anway sharing is caring.

first get IP,

 import socket
 user_ip= gethostbyname(gethostname())
 IP_cons=xxx  # you can also set IP range in the form of a list
 IP_edu =yyy
 IP_cons2=zzz

 if user_ip ==IP_cons:                # user_ip in IP_cons if lsit of IPs
     <redirect to IP_cons.html>

 elif user_ip == IP_edu:
     redirect to IP_edu.html>

 elif user_ip == IP_cons2:
     redirect to IP_cons2.html>
 else:
     home.html

Thanks.

A possible solution could be as explain here https://medium.com/@ipapi/automatically-redirect-to-country-specific-page-f687e514595e

It will return you country code based on visitor's IP, you can then write your redirection logic based on it.

本文标签: javascriptRedirect User to different Website Based on Location (IP Address)Stack Overflow