Ну, единственный способ обнаружить геолокацию - использовать навигатор, и использовать его так:
if(navigator.geolocation)
{
//Geo in Browser
}
Итак, я бы лично создал Ajax-запрос к серверу и выполнил перенаправление следующим образом:
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position){
/*
* Send Position to server where you can store it in Session
*/
document.location = '/'; //Redirect and use the session data from above
}, function(message){
/*
* Send false to the server, and then refresh to remove the js geo check.
*/
});
}
на стороне сервера вы бы сделали что-то вроде этого:
<?php /* session/geolocation.php */
//Require system files
include '../MasterBootloader.php';
/*
* Session is already started in the above inclustion
*/
if(!isset($_SESSION['geo']['checked']) && is_agax_request())
{
$_SESSION['geo'] = array();
if(isset($_GET['postition']))
{
$_SESSION['geo']['supported'] = true;
$_SESSION['geo']['location'] = json_decode($_REQUEST['geo_position']);
}
$_SESSION['geo']['checked'] = true;
}
?>
теперь, когда javascript перенаправляет вас, в вашем индексе вы можете проверить, существует ли существующий, прежде чем выводить html, тогда вы узнаете на стороне сервера, поддерживается ли GEO!