@sochi-russia

Ретаргетинг сайта по странам и роботы ПС Яндекса и Гугла правильно сделал?

На сайте 3 страницы

  1. site.ru
  2. site.ru/ru/
  3. site.ru/en/


При заходе на первую страницу идет определение страны пользователя и перенаправление в зависимости от местоположения таким образом: На главной странице в самом верху прописан код
<?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/');
}
?>


Вот содержимое файла config.php
<?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) );    
    }       
}    
?>


Проблема заключается в том, что робот Гугла получает английскую версию сайта, а основная у меня русская. Робот Гула имеет американский IP. Возможно ли как то написать условие через ЮзерАгент чтоб робот Гугла и Яндекса всегда получали русскую версию сайта?

Вот что пишет поддержка Яндекса:
Отмечу только, что наши индексирующие роботы могут обращаться из разных стран, поэтому вам стоит убедиться, что на их запросы постоянно выполняется одинаковый редирект, даже если робот обратился, например, с американского IP. О том, как проверить, что робот принадлежит Яндексу, вы можете прочитать на странице нашей Справки. И справки по 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/');}
?>
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы