在计算访问次数后,从Piwik广告系列网址重定向,以避免丑陋的网址

时间:2014-04-30 07:19:40

标签: .htaccess redirect drupal drupal-6 matomo

在Piwik中,campaign URLs看起来像这样: http://example.org/landing.html?pk_campaign=Email-Nov2011

对于Drupal 6网站,我想使用广告系列功能,但同时避免将pk_campaign参数的网址扩展到很多。

我的第一个想法是通过.htaccess重定向标题,但这没有任何意义,因为那将是在调用Piwik跟踪代码之前。所以它需要像:

  1. 致电Piwik跟踪代码
  2. 重定向到不带pk_campaign参数的网址
  3. 我想知道是否有办法实现这一目标。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我提出的一个解决方案是在显示跟踪代码后立即使用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 Output Control functions来避免标题错误:

<?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( );
?>
但是,我还没有尝试过。不知怎的,我们必须告诉&#34; Piwik是原始页面的URL,而不是跟踪代码所在的URL。