Descargar e instalar la base de datos Maxmind's GeoLite Country, que garantiza el 99.5% de precisión. Puede pagar para actualizar a una versión paga con una precisión del 99,8% reclamada. Hay cuatro opciones con respecto a cómo usar la base de datos de PHP:
- Descargue el archivo CSV e impórtelo en su base de datos SQL de su elección. Esta es la opción más lenta y tiene una API fea. No lo recomendaría, pero está incluido para completar.
- Descargue una clase PHP pura que pueda leer el archivo de la base de datos. Esto proporciona una buena API que la opción de SQL, pero aún es un poco lenta. Hay versiones para PHP4 y PHP5
- Descargue e instale el C extension module for PHP. Esto tiene la ventaja de tener un nice interface y un buen rendimiento. Sin embargo, es más difícil de instalar que la clase pura de PHP, por lo que es posible que deba consultar con su empresa de alojamiento. Si tiene suerte, es posible que ya esté instalado.
- Si necesita un rendimiento sorprendentemente rápido, vaya al Apache module. Es la opción más difícil de instalar, pero también la más rápida.
Todas estas opciones tienen un método para obtener un código de país. No incluiré la opción SQL, pero puede obtener more info here.
PHP4 puro:
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 extensión PHP: Módulo
$code = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);
Apache:
$code = apache_note("GEOIP_COUNTRY_CODE");
A continuación, puede redirigir la base de estos códigos, usando una redirección HTTP:
$redirect = array("AU" => "http://australia.example.com", "NZ" => "http://newzealand.example.com")
$url = $redirect[$code]
header("Location: $url");
Sin embargo, esto provoca dos solicitudes HTTP y, por lo tanto, no es óptimo.Un mejor enfoque es utilizar el módulo de Apache para hacer volver a escribir, en su .htaccess
archivo:
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]
Por supuesto, una forma sin duda mejor de hacer esto es conseguir que otra persona lo haga por usted, por lo el nivel de DNS. Una búsqueda rápida reveló this company, (no tengo idea si son buenos o no) sin duda hay otros. Así es como lo hace Google.
Muchas empresas tienen acceso a Internet a través de un país, aunque su trabajador está en otra parte – Mark