Есть две версия сайта Английская и русская. Нужно сделать так, чтобы допустим если пользователь заходит из сша, ему сразу была видна английская версия сайта.
Для определения страны из айпишника использую http://drupal.org/project/ip2cc
соотвественно код страны получаю так
$addr = ip_address();
$c = ip2nation_get($addr);
$ccc = $c->country;
В переменной $ccc после этого находиться двухбуквеный код страны (US,RU итд) нужно сделать так, чтобы когда код был US то происходил автоматический редерект на www.site.com/en
а когда RU, соответственно на www.site.com/ru
Как реализовать такое? Заранее благодарен за любую подсказку.
Комментарии
$addr = ip_address();
$c = ip2nation_get($addr);
drupal_goto($redirect[$c->country]);
exit();
Если для главной
Для остальных надо делать немного по другому
написал небольшой модуль для этой цели. Использовал GeoApi подключенный к nginx
<?php
/**
/**
$options = array('prefix' => '');
/**
* Implementation of hook_init().
*/
function redirect_to_init() {
global $language;
global $base_url;
if ($_SERVER['SCRIPT_NAME'] != $GLOBALS['base_path'] .'index.php') return FALSE;
* если сервер офлайн то перенаправляем на 503 ошибку
*/
if (variable_get('site_offline', 0) == 1) return FALSE;
* работает только если пользователь пришел с другого сервера
*/
if (strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME'])) return FALSE;
if (drupal_is_front_page()) { // только для главной страницы
// Получаем префикс. если префикса нету устанавливаем его значение в NULL
$query_string = drupal_query_string_encode($_GET, array('q'));
if (empty($query_string)) {
$query_string = NULL;
}
if (function_exists('language_url_rewrite')) {
$path = $_REQUEST['q'];
language_url_rewrite($path, $options);
}
$prefix = rtrim($options['prefix'], '/');
$cc=getenv('GEOIP_CITY_COUNTRY_NAME');
if($cc=='United States'&&$prefix!='en')
{
drupal_goto($base_url .'/en', $query_string, NULL, 303); // перенаправляем
return;
}
}
}?>