2014-04-30 3 views
0

Dans Piwik, campaign URLs ressemble à quelque chose comme ceci: http://example.org/landing.html?pk_campaign=Email-Nov2011Redirect à partir d'une URL de campagne Piwik après avoir compté la visite d'éviter les URL laides

Pour un site Drupal 6, je voudrais utiliser la fonction de campagne, mais en même time évite que les URL avec le paramètre pk_campaign se propagent trop. Ma première pensée était une redirection d'en-tête via .htaccess, mais cela n'a aucun sens puisque ce serait avant que le code de suivi Piwik soit appelé. Donc, il devrait être quelque chose comme:

  1. appel Piwik code de suivi
  2. Rediriger vers l'URL sans paramètre pk_campaign

Je me demande s'il y a un moyen d'y parvenir. Des pensées?

Répondre

0

Une solution que j'ai trouvée consiste à utiliser une redirection javascript juste après l'affichage du code de suivi, mais juste au cas où le paramètre pk_campaign est présent. Donc, je mets le code de suivi dans la section <head> de la page et juste après:

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

Cela semble fonctionner, mais est plus lent que d'une redirection par PHP .htaccess oder. En outre, il me force à placer le code de suivi dans le <head> et le charger avant le contenu principal de la page.

Une autre option pourrait être PHP et htaccess. Par exemple la première redirection vers un script de comptage (count.php) dans le cas où l'URL contient le paramètre pk_campaign (en .htaccess), quelque chose comme ceci:

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

Puis, en quelque chose comme count.php le suivant à l'aide PHP Output Control functions à éviter les erreurs d'en-tête:

<?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(); 
?> 

Je n'ai pas vraiment essayé cela, cependant. D'une manière ou d'une autre, nous devions "dire" à Piwik l'URL de la page d'origine, pas celle du code de suivi.