Перейти к содержанию

Использование переадресации

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

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

  • Переадресация на мобильную версию сайта: при заходе на site.ru происходит переадресация на m.site.ru.

  • Использование человекочитаемого URL (возможная опция в некоторых CMS): при заходе на страницу site.ru/?cat=23&item_id=4242 происходит переадресация на страницу site.ru/divany/super-divan.

  • Переадресация на другую версию страницы, если применяется А/Б-тестирование: при заходе на сайт site.ru происходит переадресация на site.ru/lp1.

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

  • Ссылки на другой домен для регистрации (характерно для SaaS-сервисов, где сайт и сам сервис расположены на разных доменах): например, переадресация с 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. На всех страницах сайтов выше счетчика добавьте строчку, где указывается главный домен:

    <script>window.roistatCookieDomain = '.site.ru';</script>, где вместо .site.ru нужно указать главный домен.

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

    Должен получиться код следующего вида (это пример – не копируйте его):

    <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. Необходимо при переадресации сохранять все метки, которые есть у ссылки. Например, если ссылка ведет по адресу:

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

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

    http://msk.site.ru

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

    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

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

// ..
// Выше расположен код вашего сайта до того места, где происходит переадресация
// ..

// Здесь сохраняются все метки, которые были в ссылке
$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.

Чтобы сохранить номер визита при ссылке на другой домен, в проекте Roistat откройте Настройки → Код счетчика → Показать дополнительные настройки:

1.png

Затем включите опцию Мультидоменный режим:

2.png

Кроме того, вы можете сохранять номер визита (cookie roistat_visit) при переходе с одного домена на другой с помощью ссылки, которая передает GET-параметр roistat_visit. На всех доменах должен быть установлен счетчик Roistat от одного проекта.

Пример

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

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

Пример кода (не является рабочим кодом, служит для понимания программистом алгоритма работы):

// ..
// Выше расположен код вашего сайта до того места, где происходит переадресация
// ..

// Получаем значение 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 Analytics

При использовании А/Б-экспериментов Google Analytics возникает ситуация, когда визиты клиентов считаются прямыми. Для корректного отображения источника нужно настроить скрипт, который установит cookie roistat_marker_from_referrer со значением "1" перед загрузкой счетчика. Настроить скрипт можно с помощью JavaScript и PHP