Alles rund um Suchmaschinen und was man mit ihnen anstellen kann
27 Okt
Es gibt verschiedene Arten den User von einer auf die andere Seite weiterzuleiten, muß man auf der Zwischenseite keinen Code anzeigen ist das Mittel der Wahl ein einfacher http-redirect mittels der header-Anweisung von php. Sobald aber auf der Zwischenseite etwas angezeigt werden soll, beispielsweise ein Trackingcode zum Erfassen von Clickouts, wir die Sache schon komplizierter. Dann verhält sich nämlich jeder Browser je nach verwendeter Redirect-Methode anders und übergibt den Referer entweder, oder läßt ihn unter den Tisch fallen.
Das Problem dabei ist, daß zum Beispiel beim Clickout auf Affiliate-Programme der Referer übergeben werden sollte, ansonsten sieht man sich vielleicht bald mit Fragen bezüglich der Trafficquelle konfrontiert.
Deswegen hier eine Übersicht der gängigsten Redirects und dem Verhalten von Firefox, Internet Explorer, Opera und – last but not least – Safari.
Beim Test wird auf ein Link auf eine Seite gesetzt, die den Redirect ausführt. Das Redirectziel zeigt anschließend den Referer an. Der Redirect geht über verschiedene Domains um verläßliche Daten zu erzeugen, die Browser sind in der Standardkonfiguration ohne Sicherheits- oder Privacy-Plugins.
Redirect mittels php header():
Mittels PHP wird weitergeleitet, dabei kann man noch einen http-code übergeben, beispielsweise 302:
<?php
header(“Location:http://www.ziel.com/”);
?>
Hier verhalten sich wirklich mal alle Browser identisch, als Referer wird der Ursprung übergeben, also die Seite, von der man auf das redirect-Skript linkt. Beim Redirect mittels header hat man allerdings keine Möglichkeit mit Trackingcode zu arbeiten, da jede Browserausgabe die Weiterleitung verhindern würde.
Meta-Refresh im HTML Head
Der zweite sehr gängige Ansatz ist der sogenannte Meta-Refresh, hier wird im HTML-Kopfbereich die Anweisung zur Weiterleitung in den Meta-Tags gegeben, das ganze sieht dann so aus:
<html>
<head>
<meta http-equiv=”refresh” content=”0;url=http://www.ziel.com/”>
</head>
</html>
Die Angabe 0 im Content-Bereich gibt die Anzahl von Sekunden an, die vor dem Redirect gewartet werden soll. 0 steht also für sofortige Weiterleitung. Hier kann man auf der HTML-Seite noch Trackingcode unterbringen.
Bereits bei diesem Redirect gehen die Verhaltensweisen der Browser auseinander, immerhin sind sich jeweils 2 Vertreter einig: Firefox und Internet Explorer übergeben einen leeren Referer, bei Opera und Safari wird als Referer die weiterleitende Seite übergeben, also die, auf der der Meta-Refresh eingebaut ist.
Eine zuverlässige Übergabe des Referers erfolgt hier also leider nicht.
Javascript Methode 1 – window.location.href
Für die Weiterleitung mittels Javascript muß der Benutzer natürlich diese Skriptsprache im Browser aktiviert haben und die Ausführung erlauben. Das sollte aber noch bei der Mehrzahl der User der Fall sein, so daß diese Anweisung im Normalfall klappen sollte:
<script language=Javascript>
window.location.href=’http://www.ziel.com/’;
</script>
Auch hier gehen die übergebenen Referer wieder auseinander, immerhin sind sich jetzt 3 Browser einig. Firefox, Opera und Safari übergeben als Referer die Weiterleitungsseite, auf der das Javascript ausgeführt wird. Internet Explorer schlägt aus der Reihe und übergibt einfach mal gar nichts….
Auch hier wird Quellcode auf der Seite vor der Weiterleitung noch ausgeführt und somit eignet sich die Lösung auch für Tracking.
Javascript Methode 2 – form.submit
Eine auf den ersten Blick etwas eigenartige Form der Weiterleitung läßt sich mit diesem Codeschnipsel umsetzen:
<body onload=”javascript:frmClickTracking.submit();”>
<form action=”http://www.ziel.com/” method=”post” name=”frmClickTracking”>
</form>
Beim Laden des HTML-Codes wird also gleich das Formular abgeschickt und somit die Ziel-URL aufgerufen. Auch hier wird Trackingcode im Body vor der Weiterleitung noch ausgeführt. Eine weitere gute Nachricht: bei dieser Weiterleitungsmethode verhalten sich alle 4 Browser gleich und übergeben als Referer die Seite, die den Redirect ausgelöst hat, auf der also das Formular mittels Javascript abgeschickt wird.
Je nach Browser hat man also mal einen Referer und mal keinen, wirklich zuverlässig ist wohl nur die Weiterleitung mittels php header Anweisung, allerdings ist hier keine Codeausführung im Browser möglich, ergo kein Tracking. Die einzige Möglichkeit einen Referer zu übergeben und trotzdem Code auszuführen besteht in der etwas exotischen Weiterleitung mittels Javascript form.submit();
Bei allen anderen Methoden sind Abweichungen je nach verwendetem Browser gegeben.
Da man nie sicher sein kann, ob ein User Javascript aktiv hat, ist vielleicht eine Kombination aus mehreren Methoden sinnvoll. Entweder durch Implementierung einer Browserweiche, oder durch Hintereinanderschalten von mehreren Redirect. Beispielsweise läßt sich in einer Seite sowohl ein Refresh per Meta-Anweisung als auch die Weiterleitung mit Javascript umsetzen. Also, Meta-Refresh mit 1 Sekunde Verzögerung und form.submit(). Wenn das Javascript nicht greift, sollte der Meta-Redirect einspringen und als letzten Notnagel zeigt man einfach noch den beliebten Standardtext “Wenn Sie nicht weitergeleitet werden, klicken Sie bitte hier….”.
Es wäre schön wenn hier etwas mehr Einigkeit zwischen den Browsern herrschen würde, ich hoffe aber, daß mein kleiner Exkurs in die Welt der Redirects und Referer für den ein oder anderen hilfreich war.