Перенаправление с 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

Мне интересно, есть ли способ достичь этого. Какие-нибудь мысли?

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 (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 исходной страницы, а не тот, в котором находится код отслеживания.

Другие вопросы по тегам