在Piwik中,campaign URLs看起来像这样: http://example.org/landing.html?pk_campaign=Email-Nov2011
对于Drupal 6网站,我想使用广告系列功能,但同时避免将pk_campaign参数的网址扩展到很多。
我的第一个想法是通过.htaccess重定向标题,但这没有任何意义,因为那将是在调用Piwik跟踪代码之前。所以它需要像:
我想知道是否有办法实现这一目标。有什么想法吗?
答案 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。