HTTP Referrer при перенаправлении - PullRequest
0 голосов
/ 29 декабря 2011

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

<?
.
..
...
....
header("location:$golink"); 
?>

Но в Google Analytics не будет отображаться сайт реферала (где находится скриптработает) вместо этого он показывает URL, где кликнул баннер.Очевидно, я не могу отслеживать все сайты, где появляется баннер, и не хочу.Я хочу, чтобы реферер был сайтом, на котором работает скрипт.Как мне использовать $ _ SERVER ['HTTP_REFERER']; , чтобы сделать это?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2011

GA имеет метод, который позволит вам переопределить URL-адрес ссылки по умолчанию (document.referrer) с указанным значением.

Поэтому, если вы хотите сохранить перенаправление на стороне сервера, вы можете добавить URL-адрес ссылки в качестве параметра строки запроса в вызове header (), а затем найти его на целевой странице и указать в качествессылающийся URL.

Я не знаю, как вы строите переменную $ golink, но в основном вы бы добавили что-то вроде:

$golink .= "?ref=" . $_SERVER['HTTP_REFERER'];

Использование& вместо ?, если уже есть параметры URL, и приведенный выше код предполагает использование ref в качестве параметра URL, так что используйте любую переменную, какую хотите.

Затем на ваших целевых страницах перед вызовом _trackPageview вы добавите

_gaq.push(['_setReferrerOverride', ref]);

ref - переменную javascript со значениемref = xxx строка запроса param.По какой-то странной причине в Javascript нет собственного способа получения значений параметров URL, а также GA не предоставляет (открытого) решения.Если у вас уже есть решение на ваших страницах для получения параметров URL (например, что-то из фреймворка или функции, которую вы уже сделали), используйте это.В противном случае довольно легко найти функцию javascript, которая сделает это за вас.

Есть несколько преимуществ сделать это следующим образом:

  1. Вам не нужно беспокоиться о том, что посетитель увидит промежуточную страницу.
  2. Вы нене нужно беспокоиться о том, что GA не получит шанса на полную загрузку перед перенаправлением
  3. . Вы можете видеть, что источники ссылок привязаны непосредственно к вашим целевым страницам, потому что с промежуточной страницей вы всегда будете видеть эту промежуточную страницу как источники нужно будет посмотреть ссылки на отчеты URL для промежуточной страницы.
1 голос
/ 29 декабря 2011

Да, G.A слеп к такого рода вещам на стороне сервера. И их PHP Api тоже не помогает.

Однако у вас может быть короткая страница перенаправления, содержащая тег GA внутри, например:

<html>
<head>
<title>A web page that points a browser to a different page after 2 seconds</title>
<meta http-equiv="refresh" content="2; URL=<?php  echo $golink; ?>">
<meta name="keywords" content="automatic redirection">
<script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'))</script>
</head>
<body>
If your browser doesn't automatically go there within a few seconds, 
you may want to go to 
<a href="<?php echo $golink ?>">the destination</a> 
manually.
</body>
</html>

Обратите внимание на переменную $golink в метатеге.

Если вы используете это, не забудьте заменить UA-XXXXX-X на свой реальный номер счета.

Кредиты: оптимизированный тег GA переходит на Mathias Bynens

[РЕДАКТИРОВАТЬ: версия только для javascript]

<html>
<head>
<title>Redirecting you...</title>
<script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'))</script>
<script>
 <!--
 if (window.addEventListener) 
    window.addEventListener('load', function() { window.location="<?php echo $golink; ?>"; }, false);
 else
    window.attachEvent('onload', function() { window.location="<?php echo $golink; ?>"; });
 // -->
 </script>
</head>
<body>
</body>
</html>
...