Перенаправление с URL-адреса кампании Piwik после подсчета посещения, чтобы избежать некрасивых URL-адресов.

В Piwik URL кампаний выглядят примерно так: http://example.org/landing.html?pk_campaign=Email-Nov2011

Для сайта Drupal 6 я хотел бы использовать функцию кампании, но в то же время избегать слишком большого распространения URL-адресов с параметром pk_campaign.

Моей первой мыслью было перенаправление заголовка через .htaccess, но это не имеет смысла, так как это будет до вызова кода отслеживания Piwik. Таким образом, это должно быть что-то вроде:

  1. Позвоните по коду отслеживания Piwik
  2. Перенаправление на URL без параметра pk_campaign

Мне интересно, есть ли способ достичь этого. есть идеи?


person yan    schedule 30.04.2014    source источник


Ответы (1)


Одно решение, которое я придумал, заключается в использовании перенаправления javascript сразу после отображения кода отслеживания, но на тот случай, если присутствует параметр pk_campaign. Поэтому я помещаю код отслеживания в раздел <head> страницы и сразу после этого:

<script type="text/javascript">
  if (location.search.indexOf('pk_campaign=')>=0)
  {
    document.location.href=location.protocol + '//' + location.host + location.pathname;
  }
</script>

Кажется, это работает, но медленнее, чем перенаправление через .htaccess или PHP. Кроме того, это заставляет меня размещать код отслеживания в <head> и загружать его перед основным содержимым страницы.

Другой вариант может быть в PHP и htaccess. Например, первое перенаправление на скрипт подсчета (count.php), если URL-адрес содержит параметр pk_campaign (в .htaccess), примерно так:

  RewriteCond %{QUERY_STRING} pk_campaign
  RewriteRule ^ /count.php?url=http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

Затем в count.php что-то вроде следующего с использованием функций управления выводом PHP для избежать ошибок заголовка:

<?php
  ob_start( );
?>

  <!-- Piwik tracking code here -->

<?php
  if (isset($_GET['pk_campaign'])) {
    ob_end_clean( );
    header( 'Location: ' . preg_replace('/\?.*$/', '', $_SERVER["REQUEST_URI"]) );
    exit;
  }

  ob_end_flush( );
?>

Я действительно не пробовал это, хотя. Каким-то образом нам пришлось бы «сообщить» Piwik URL исходной страницы, а не той, на которой находится код отслеживания.

person yan    schedule 02.05.2014