Answer the question
In order to leave comments, you need to log in
Did you do the right thing about site retargeting by country and Yandex and Google PS robots?
Website has 3 pages
<?php
require_once('config.php'); //The above code
$geoplugin = new geoPlugin();
$geoplugin->locate();
// create a variable for the country code
$var_country_code = $geoplugin->countryCode;
// redirect based on country code:
if ($var_country_code == "RU") {
header('Location: https://www.site.ru/ru/');
}
else if ($var_country_code == "US") {
header('Location: https://www.site.ru/en/');
}
else if ($var_country_code == "UA") {
header('Location: https://www.site.ru/ru/');
}
else if ($var_country_code == "KG") {
header('Location: https://www.site.ru/ru/');
}
else if ($var_country_code == "UZ") {
header('Location: https://www.site.ru/ru/');
}
else {
header('Location: https://www.site.ru/en/');
}
?>
<?php
class geoPlugin {
var $host = 'http://www.geoplugin.net/php.gp?ip={IP}&base_currency={CURRENCY}&lang={LANG}';
var $currency = 'USD';
var $lang = 'en';
var $ip = null;
var $city = null;
var $region = null;
var $regionCode = null;
var $regionName = null;
var $dmaCode = null;
var $countryCode = null;
var $countryName = null;
var $inEU = null;
var $euVATrate = false;
var $continentCode = null;
var $continentName = null;
var $latitude = null;
var $longitude = null;
var $locationAccuracyRadius = null;
var $timezone = null;
var $currencyCode = null;
var $currencySymbol = null;
var $currencyConverter = null;
function __construct() {
}
function locate($ip = null) {
global $_SERVER;
if ( is_null( $ip ) ) {
$ip = $_SERVER['REMOTE_ADDR'];
}
$host = str_replace( '{IP}', $ip, $this->host );
$host = str_replace( '{CURRENCY}', $this->currency, $host );
$host = str_replace( '{LANG}', $this->lang, $host );
$data = array();
$response = $this->fetch($host);
$data = unserialize($response);
//set the geoPlugin vars
$this->ip = $ip;
$this->city = $data['geoplugin_city'];
$this->region = $data['geoplugin_region'];
$this->regionCode = $data['geoplugin_regionCode'];
$this->regionName = $data['geoplugin_regionName'];
$this->dmaCode = $data['geoplugin_dmaCode'];
$this->countryCode = $data['geoplugin_countryCode'];
$this->countryName = $data['geoplugin_countryName'];
$this->inEU = $data['geoplugin_inEU'];
$this->euVATrate = $data['euVATrate'];
$this->continentCode = $data['geoplugin_continentCode'];
$this->continentName = $data['geoplugin_continentName'];
$this->latitude = $data['geoplugin_latitude'];
$this->longitude = $data['geoplugin_longitude'];
$this->locationAccuracyRadius = $data['geoplugin_locationAccuracyRadius'];
$this->timezone = $data['geoplugin_timezone'];
$this->currencyCode = $data['geoplugin_currencyCode'];
$this->currencySymbol = $data['geoplugin_currencySymbol'];
$this->currencyConverter = $data['geoplugin_currencyConverter'];
}
function fetch($host) {
if ( function_exists('curl_init') ) {
//use cURL to fetch data
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $host);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'geoPlugin PHP Class v1.1');
$response = curl_exec($ch);
curl_close ($ch);
} else if ( ini_get('allow_url_fopen') ) {
//fall back to fopen()
$response = file_get_contents($host, 'r');
} else {
trigger_error ('geoPlugin class Error: Cannot retrieve data. Either compile PHP with cURL support or enable allow_url_fopen in php.ini ', E_USER_ERROR);
return;
}
return $response;
}
function convert($amount, $float=2, $symbol=true) {
//easily convert amounts to geolocated currency.
if ( !is_numeric($this->currencyConverter) || $this->currencyConverter == 0 ) {
trigger_error('geoPlugin class Notice: currencyConverter has no value.', E_USER_NOTICE);
return $amount;
}
if ( !is_numeric($amount) ) {
trigger_error ('geoPlugin class Warning: The amount passed to geoPlugin::convert is not numeric.', E_USER_WARNING);
return $amount;
}
if ( $symbol === true ) {
return $this->currencySymbol . round( ($amount * $this->currencyConverter), $float );
} else {
return round( ($amount * $this->currencyConverter), $float );
}
}
function nearby($radius=10, $limit=null) {
if ( !is_numeric($this->latitude) || !is_numeric($this->longitude) ) {
trigger_error ('geoPlugin class Warning: Incorrect latitude or longitude values.', E_USER_NOTICE);
return array( array() );
}
$host = "http://www.geoplugin.net/extras/nearby.gp?lat=" . $this->latitude . "&long=" . $this->longitude . "&radius={$radius}";
if ( is_numeric($limit) )
$host .= "&limit={$limit}";
return unserialize( $this->fetch($host) );
}
}
?>
I will only note that our indexing robots can be accessed from different countries, so you should make sure that the same redirect is constantly performed on their requests, even if the robot accessed, for example, from an American IP. You can read about how to check that a robot belongs to Yandex on our Help page. And help on useragent
<?php
require_once('config.php'); //The above code
$geoplugin = new geoPlugin();
$geoplugin->locate();
// create a variable for the country code
$var_country_code = $geoplugin->countryCode;
// redirect based on country code:
if ($var_country_code == "RU") {
header('Location: https://www.site.ru/ru/');
}
else if ($var_country_code == "US") {
header('Location: https://www.site.ru/en/');
}
else if ($var_country_code == "UA") {
header('Location: https://www.site.ru/ru/');
}
else if ($var_country_code == "KG") {
header('Location: https://www.site.ru/ru/');
}
else if ($var_country_code == "UZ") {
header('Location: https://www.site.ru/ru/');
}
else {
header('Location: https://www.site.ru/en/');
}
if (!empty($_SERVER['HTTP_USER_AGENT'])) {
$options = array(
'YandexBot', 'YandexAccessibilityBot', 'YandexMobileBot','YandexDirectDyn',
'YandexScreenshotBot', 'YandexImages', 'YandexVideo', 'YandexVideoParser',
'YandexMedia', 'YandexBlogs', 'YandexFavicons', 'YandexWebmaster',
'YandexPagechecker', 'YandexImageResizer','YandexAdNet', 'YandexDirect',
'YaDirectFetcher', 'YandexCalendar', 'YandexSitelinks', 'YandexMetrika',
'YandexNews', 'YandexNewslinks', 'YandexCatalog', 'YandexAntivirus',
'YandexMarket', 'YandexVertis', 'YandexForDomain', 'YandexSpravBot',
'YandexSearchShop', 'YandexMedianaBot', 'YandexOntoDB', 'YandexOntoDBAPI',
'Googlebot', 'Googlebot-Image', 'Mediapartners-Google', 'AdsBot-Google',
'Mail.RU_Bot', 'bingbot', 'Accoona', 'ia_archiver', 'Ask Jeeves',
'OmniExplorer_Bot', 'W3C_Validator', 'WebAlta', 'YahooFeedSeeker', 'Yahoo!',
'Ezooms', '', 'Tourlentabot', 'MJ12bot', 'AhrefsBot', 'SearchBot', 'SiteStatus',
'Nigma.ru', 'Baiduspider', 'Statsbot', 'SISTRIX', 'AcoonBot', 'findlinks',
'proximic', 'OpenindexSpider','statdom.ru', 'Exabot', 'Spider', 'SeznamBot',
'oBot', 'C-T bot', 'Updownerbot', 'Snoopy', 'heritrix', 'Yeti',
'DomainVader', 'DCPbot', 'PaperLiBot'
);
header('Location: https://www.site.ru/ru/');}
?>
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question