Canonical URLs mit Piwik nutzen

Manche Content Management Systeme generieren von Haus aus sehr unschöne URLs. Besonders einige Shopsysteme scheinen miteinander in einer Art Wettbewerb um die hässlichsten URLs zu stehen. Mit passenden Plugins oder Programmierkenntnissen kann man diesem Makel bei vielen Systemen zuleibe rücken. Doch ist der eigene Shop nur angemietet ist, steht man ziemlich dumm da, denn in dem Fall kann man nichts umprogrammieren oder nachinstallieren. Solche URLs sind nicht nur unschön, sondern erschweren auch die Auswertung der eigenen Zugriffsstatistiken und das ist schlichtweg schlecht fürs Geschäft.

Viele Hoster bieten ihren Kunden solche gehosteten Shops an, in denen die Kunden nur noch Basiseinstellungen machen und ihre Produkte einpflegen müssen. Der Hosteurope E-Shop 2.0 beispielsweise basiert auf dem ePages-Shopsystem Version 6 und soweit ich weiß basieren auch die mietbaren T-Online Shops auf diesem Online-Shop-System. Das URL-Schema des Shopsystems sorgt dafür, dass ein schneller Überblick über in den Webstatistiken (hier: Piwik) ziemlich nichtssagend ist:

ePages Standard URLs in PiwikAus dem Screenshot wird ersichtlich, dass man erstmal eine Runde klicken muss, um dann Shop-Kategorien und -Produkte einzelen mit ihren Zugriffen sehen zu können Das ist mühsam, unübersichtlich und schlichtweg ein Graus.

Allerdings erzeugt das Shopsystem Canonical URLs für jede Seite unter denen die Seiten auch korrekt von den Suchmaschinen indexiert werden. Diese sind kurz, prägnant und es wäre ideal diese in den Webstatistiken zu sehen statt der im Browser angezeigten Seiten-URL. Und das ist auch kein Problem. Dazu muss man im Falle von Piwik den Tracking-Code nur leicht erweitern und die Funktion setCustomURL() des Piwik Trackers benutzen, mit dem man abweichende URLs übermitteln kann:

[javascript language=“8-15″]
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$URL}/" : "http://{$URL}/");
document.write(unescape("%3Cscript src=’" + pkBaseURL + "piwik.js‘ type=’text/javascript’%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$SITE_ID});

var canonical = "";
var links = document.getElementsByTagName("link"); // alle <link>-Elemente der Seite auslesen
for (var i = 0; i < links.length; i ++) { // alle gefundenen <link>-Elemente durchlaufen
if (links[i].getAttribute("rel") === "canonical") { // <link rel="canonical"> gefunden
canonical = links[i].getAttribute("href"); // Variable canonical mit Canonical-URL belegen
piwikTracker.setCustomUrl(canonical); // Piwik anweisen die URL aus unserer Variable zu nutzen
}
}

piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script>
[/javascript]

Interessant sind hier der durch Leerzeilen abgesetzte Code-Block (Zeilen 8-15). Er macht nichts anderes als die kanonische URL aus dem HTML-Quellcode der Seite auszulesen. Diese URL wird in einer Variable an Piwik übergeben und Piwik angewiesen diese zu nutzen. Ist die Canonical URL nicht gesetzt, bleibt das Standardverhaltenvon Piwik aktiv, welches einfach die in der Browser-Adress-Zeile erscheinende URL übermittelt.

Tauscht man den Piwik Tracking-Code nun in seinem ePages Shop aus und stößt die Aktualisierung des Cache in ePages an, ist fortan unser neuer Code aktiv. Ein Check in Piwik ergibt ebereits nach kurzer Zeit, dass tatsächlich die Canonical-URLs ausgewiesen werden. Damit haben bekommen wir zukünftig endlich eine auf den ersten Blick und Klick aussagekräftige Anzeige:

Nach diesem Schema kann man auch für andere Systeme vorgehen. Hat man Zugriff auf die Quellcodes, muss man auch nicht den Umweg über das Auslesen der Canonical URL via JavaScript gehen, sondern kann, wenn die URL bereits in einer Variable vorliegt, diese direkt in den Quellcode schreiben:

[javascript language=“8″]
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$URL}/" : "http://{$URL}/");
document.write(unescape("%3Cscript src=’" + pkBaseURL + "piwik.js‘ type=’text/javascript’%3E%3C/script%3E"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$SITE_ID});

piwikTracker.setCustomUrl(<?php print $canonical_url; ?>);

piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script>
[/javascript]

Die gezeigte Vorgehensweise ist nicht nur in solchen Extremfällen sinnvoll und nützlich. Wer auf seiner Website signifikanten Traffic auf nicht-kanonischen URLs hat, kann auf diese Art seine Daten in der Webanalyse konsolidieren.