JavaScript Redirect: проблема с заголовком Referer - PullRequest
7 голосов
/ 11 ноября 2010

Кто-то переходит по ссылке в блоге (скажем http://blog), чтобы зайти на мой сайт (скажем http://mysite/a.php).

)

Так что теперь она на странице http://mysite/a.php, а реферер установлен на http://blog

Теперь на странице есть JavaScript http://mysite/a.php, который выполняет следующее перенаправление:

    document.location = "http://mysite/b.php;
    //This is executed before any Google Analytics script.

Теперь в запросе http://mysite/b.php, реферер установлен как http://mysite/a.php.
Из-за чего (я так думаю) моя Google Analytics показывает весь трафик, приходящий с http://mysite/a.php.

Предложите решение, пожалуйста.
Примечание. Перенаправление JavaScript является критически важным, избавиться от него невозможно.
Также я попытался отправить код 302 с сервера, но безуспешно.

Ответы [ 2 ]

11 голосов
/ 11 ноября 2010

Редактировать: новый, рекомендуемый способ

В Google Analytics теперь есть специальный параметр URL, utm_referrer, где вы можете передать реферер на страницу, на которую вы перенаправляете;при этом будет смоделировано то же поведение, что и ниже, без необходимости связываться с файлами cookie или функциями.

В вашем примере вы должны заставить свой код сказать:

 document.location = "http://mysite/b.php?utm_referrer=" + encodeURIComponent(location.href); ;

Старый, сложнее, но функциональнее

В Google Analytics есть функция setRefererOverride () .Если вы установите его, он переопределит значение реферера, которое он отслеживает, на любое значение, которое вы установили.

Лучший способ сделать это - до перенаправления сохранить реальный реферер в файле cookie, например, так:

document.cookie = "realreferrer="+encodeURIComponent(document.referrer)+"; path=/";

Затем прочитайтезначение cookie на странице.Если файл cookie установлен, вызовите эту функцию перед просмотром страницы.

var realreferrer = readCookie("realreferrer"); //using a readCookie function of some kind
if (realreferrer) {
 _gaq.push(['_setReferrerOverride', realreferrer ]);
            //if using the old code, use pageTracker._setReferrerOverride(realreferrer);
}
0 голосов
/ 11 ноября 2010

Я думаю, что самым чистым (и, возможно, единственным) способом было бы запустить счетчик GA в a.php перед выполнением перенаправления.

Если это не вариант, единственный способ сохранить реферера в живых - это

document.location = "http://mysite/b.php?referrer="+
                    encodeURIComponent(document.referrer);

( не будет работать в IE при некоторых обстоятельствах )

Но это все равно не скажет GA, чтобы соответствующим образом установить реферера - вам придется навязывать его Google Analytics при подсчете. Я не знаю, возможно ли это.

...