Loading...
Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Описание проблемы

Если на сайте используется переадресация или переход на другой домен, это может приводить к ошибочной статистике. Примеры таких случаев:

  • Переадресация на мобильную версию сайта

    Info
    titleПример

    При заходе на site.ru происходит переадресация на m.site.ru


  • Использование человекочитаемого URL (возможная опция в некоторых CMS)

    Info
    titleПример

    При заходе на страницу site.ru/?cat=23&item_id=4242 происходит переадресация на страницу site.ru/divany/super-divan


  • Переадресация на другую версию страницы, если применяется АБ-тестирование

    Info
    titleПример

    При заходе на сайт site.ru происходит переадресация на site.ru/lp1


  • Переход на домен для другого города, если сайт рассчитан на несколько регионов

    Info
    titleПример

     При заходе на сайт site.ru происходит переадресация на msk.site.ru


  • Ссылки на другой домен для регистрации (характерно для SaaS-сервисов, где сайт и сам сервис расположены на разных доменах)

    Info
    titleПример

    Например, переадресация с site.ru на register.site.ru

    В этом случае визит на сайт site.ru будет определен верно, но для регистрации на домене register.site.ru источником будет site.ru

Все эти случаи объединяет одно: при визите на изначальный сайт site.ru происходит переадресация, которая ведет к потере меток в ссылке. Это легко заметить в адресной строке браузера: если зайти по ссылке с метками (например, по объявлению из Директа), то в итоге вы окажетесь на странице, где этих меток нет.

Решение

Обратите внимание, что на всех сайтах, которые участвуют в переадресации, должен быть установлен счетчик Roistat.

Решений может быть несколько, и в разных ситуациях они могут быть разные  выберите наиболее вам подходящее.

Отключение переадресации

Если есть возможность просто отключить переадресацию, то это будет самым простым решением ситуации.

Например, это может быть актуально для функции человекочитаемого URL в различных CMS, если эта функция используется без какой-либо пользы.

Указать в объявлениях конечный сайт

Данное решение актуально для тех случаев, когда есть возможность вести трафик сразу на конечную страницу.

Например, вы знаете, что в Директе рекламная кампания запущена только на Москву. В этом случае нет особого смысла указывать ссылку в объявлениях на site.ru, если сработает переадресация на msk.site.ru. Укажите в рекламных объявлениях ссылку сразу на msk.site.ru.

Настройка единого домена для всех сайтов

Если переход на другой сайт является переходом посетителя в рамках одного проекта, то есть возможность сохранять все cookie файлы на одном основном сайте.

Например, в SaaS сервисах очень частая ситуация, когда основной сайт расположен на домене site.ru, а регистрация и сам сервис расположены на другом домене, например, cloud.site.ru (так сделано и в самом Roistat).

В этом случае вы можете указать один домен главным, тогда переходы на домены уровнем ниже не будут считаться отдельными визитами.

1) Проследите, чтобы на всех доменах был поставлен счетчик от одного проекта Roistat;

2) Установите на всех страницах сайтов, выше счетчика, строчку, где указывается главный домен:

Status
colourYellow
titleВнимание
 Замените site.ru на ваш главный домен

Code Block
languagejs
themeConfluence
<script>window.roistatCookieDomain = 'site.ru';</script> 

Данную строчку необходимо разместить на всех доменах. В случае с примером выше  и на домене site.ru, и на домене cloud.site.ru.

Должно получиться так:

Status
colourYellow
titleВнимание
 Это пример. Не копируйте этот код!

Code Block
languagejs
themeConfluence
<script>window.roistatCookieDomain = 'site.ru';</script> 
<script>
(function(w, d, s, h, id) {
    w.roistatProjectId = id; w.roistatHost = h;
    var p = d.location.protocol == "https:" ? "https://" : "http://";
    var u = /^.*roistat_visit=[^;]+(.*)?$/.test(d.cookie) ? "/dist/module.js" : "/api/site/1.0/"+id+"/init";
    var js = d.createElement(s); js.async = 1; js.src = p+h+u; var js2 = d.getElementsByTagName(s)[0]; js2.parentNode.insertBefore(js, js2);
})(window, document, 'script', 'cloud.roistat.com', '0');
</script> 

Если у вас разные домены первого уровня в рамках одного проекта (site.ru, site.com), то данное решение вам не подойдет. Вам нужно будет установить счетчики roistat на каждую страницу.

Если же у вас основной домен один, используются различные поддомены и между этими ресурсами происходят переходы и переадресации в рамках одного проекта (site.ru, up.site.ru, down.site.ru), то приведенное решение вам подходит.

Сохранение меток при переадресации

Этот способ применяется в случаях, когда нужно сделать переадресацию с сохранением источника на другой домен. Он отличается от способа Сохранение номера визита при ссылке на другой домен тем, что при переадресации еще не отработал счетчик Roistat, поэтому значение номера визита еще не известно.

Задача состоит из двух пунктов:

1) Необходимо при переадресации сохранять все метки, которые есть у ссылки. Например, если ссылка ведет по адресу:

Code Block
http://site.ru/?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}

А переадресация идет по ссылке:

Code Block
http://msk.site.ru

В этом случае нужно реализовать переадресацию так, чтобы она шла на адрес:

Code Block
http://msk.site.ru/?utm_source=yandex&utm_medium=cpc&utm_campaign={campaign_id}&utm_content={ad_id}&utm_term={keyword}

2) Необходимо сохранять оригинальный реферер перехода в cookie с названием «roistat_referrer».

Пример

Пример для случая, когда происходит переадресация с site.ru на msk.site.ru.

Status
colourRed
titleВнимание!
 Этот пример не является рабочим кодом, он служит для понимания программистом алгоритма работы.

Code Block
languagephp
// ..
// Выше расположен код вашего сайта до того места, где происходит переадресация
// ..
 
// Здесь сохраняются все метки, которые были в ссылке
$param = !empty($_SERVER['QUERY_STRING']) ? "?" . $_SERVER['QUERY_STRING'] : ""; 
 
// В cookie roistat_referrer сохраняется изначальный реферер визита
setcookie("roistat_referrer", isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ""); 

// В этой строчке происходит переадресация на другой домен с сохранением всех меток
header("Location: http://msk.site.ru/{$param}"); 

Сохранение номера визита при ссылке на другой домен

Данный способ используется, когда необходимо предоставить ссылку пользователю с одного домена на другой с сохранением первоначального источника.
Он отличается от способа Сохранение меток при переадресации тем, что номер визита уже известен, так как отработал счетчик Roistat.

Есть возможность сохранять номер визита (cookie «roistat_visit») при переходе с одного домена на другой. Для этого необходимо сделать ссылку с передачей GET-параметра «roistat_visit». На всех доменах должен быть установлен счетчик Roistat от одного проекта.

Пример

Посетитель зашел на сайт test.ru/?utm_source=direct, где установлен счетчик Roistat. Этому посетителю был установлен номер визита 12300. Теперь должен происходить переход на сайт site.ru по ссылке site.ru/?roistat_visit=12300.

На втором сайте site.ru обязательно должен быть установлен счетчик Roistat.

Код:

Status
colourRed
titleВнимание!
 Этот пример не является рабочим кодом, он служит для понимания программистом алгоритма работы.

Code Block
languagephp
themeConfluence
// ..
// Выше расположен код вашего сайта до того места, где происходит переадресация
// ..
 
// Получаем значение cookie roistat_visit
$roistatVisitId = array_key_exists('roistat_visit', $_COOKIE) ? $_COOKIE['roistat_visit'] : ""
 
// Записываем значение roistat_visit в GET-параметр
$queryString = "?roistat_visit=" . $roistatVisitId;
 
// Ссылка на другой домен
<a href="http://site.ru/<?php echo $queryString; ?>">Ссылка на другой домен с сохранением источника</a>

Использование источника визита страницы, с которой был осуществлен переход на сайт

Вы можете настроить использование источника страницы, с которой была осуществлена переадресация. Для этого необходимо на конечную страницу установить cookie: roistat_marker_from_referrer = 1

Пример

Пользователь переходит на сайт test.ru/?utm_source=direct с него происходит переадресация на страницу A/B теста: test.ru/new. Если на этой странице установлен счетчик Roistat и установлено cookie roistat_marker_from_referrer = 1 системой будет зафиксирован визит с источника Яндекс.Директ.

Получение информации о визитах при использовании АБ-экспериментов Google Analyatics

При использовании АБ-экспериментов Google Analytics возникает ситуация, когда визиты клиентов считаются прямыми

, но в coockie нужно прописать страницу, на которую зашел клиент

. Для

этого

корректного отображения источника нужно настроить скрипт, который

установит cookie

установит cookie "roistat_marker_from_referrer" со

значением 

значением "1" перед загрузкой

сайта

счетчика. Настроить скрипт можно с

помощью

помощью JavaScript и PHP

Итог

После решения проблемы с переадресацией все оригинальные источники визитов будут сохранены, и это никак не повлияет на вашу статистику.


Table of Contents