Affiliate links cloaken in PHP
De welbekende affiliate links (clicks.m4n.nl/etc..) zijn uiteraard essentieel om al jullie leads en sales te tracken, maar voor de eindgebruiker (en ook voor Google) ziet zo’n URL er niet altijd even herkenbaar uit. Een tijd geleden hebben we al uitgelegd hoe een link met htaccess kan worden gecloakt.
Vandaag leggen we uit hoe je met een PHP script je uitgaande commerciële links kan verbergen door middel van cloaking. De belangrijkste 2 redenen hiervoor zijn:
- betere gebruikerservaring
- bijdrage aan een hogere ranking in zoekmachines (aangezien die websites met veel commerciële links soms lager beoordelen).
Hieronder een PHP script waarmee je de links kunt verbergen.
$s = $_GET["s"];
if (isset($s))
{
if ($s == "product1") { $url = "http://www.website1.nl"; }
elseif ($s == "product2") { $url = "http://www.website2.nl"; }
elseif ($s == "product3") { $url = "http://www.website3.nl"; }
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
exit;
}
else
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.website.nl');
}
Als je deze code opslaat als clicks.php en dan linkt naar clicks.php?s=product1 wordt je naar de bijbehorende website doorgestuurd.
Op een vergelijkbare manier kun je de URL’s ook uit de (MySQL) database halen; dit is voornamelijk handig als je erg veel verschillende uitgaande links op je website hebt (en/of gebruik maakt van datafeeds). Dan komt de code er als volgt uit te zien:
$id = $_GET["id"];
if (isset($id))
{
$link = mysql_connect($server, $sqllogin, $sqlpw)
or die("MySQL is brak: " . mysql_error());
mysql_select_db($database);
$query = "select url from $tablename WHERE id = $id";
$result = mysql_query($query) or die("Error while processing query");
$line = mysql_fetch_array($result, MYSQL_ASSOC);
$url = $line[url];
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.$url);
exit;
}
else
{
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.website.nl');
}


27 oktober, 2009 at 20:23
er mist een “<?" bij het begin van de eerste code.
29 oktober, 2009 at 17:50
@Martijn: je hebt gelijk, die werd blijkbaar weggehaald door WP. heb ze voor de correctheid in beide gevallen maar achterwege gelaten.
4 december, 2009 at 21:40
Bij mijn website heb ik mijn links herschreven.
http://click.m4n.nl/?id=123123
\wordt bijvoorbeeld herschreven naar naar
http://www.mijnwebsite.nl/product/bestellen/
Op die pagina heb ik een header redirect geplaatst.
Moet dit een 301 redirect zijn? Geef hier momenteel namelijk geen server code aan mee.
Ik zie bij Google Webmastertools dat er Crawlfouten zijn. Dat zijn precies die pagina’s:
http://www.mijnwebsite.nl/product/bestellen/
Tevens heb ik op die pagina een staan.
Wat kan ik verbeteren? Of moet ik geen waarde hechten aan die crawlfouten?
9 februari, 2010 at 9:45
Ik heb mijn links inderdaad ook gecloacked, maar geblokkeerd in mijn robots.txt. Op deze manier volgt Google ze niet. Maar is de 301 redirect noodzakelijk?
Naast bovenstaande cloacking, kan je natuurlijk op deze manier gelijk het aantal click-outs tellen/tracken.
18 november, 2010 at 11:38
Dit is niet wat doorgaans onder ‘cloaken’ wordt verstaan, namelijk zoekmachines andere content aanbieden dan bezoekers.
Wel kun je zo ‘tracken’, ofwel click-outs loggen/tellen.
Maar belangrijkste: dit lost niet het probleem op dat je van Google niet zonder rel=nofollow mag linken na affiliates!
De nofollow moet dus nog steeds in de link of je moet de redirect laten lopen via een middels robots.txt voor zoekmachines afgesloten pagina.
18 november, 2010 at 20:50
Interessant artikel. Ik heb direct deze methode toegepast.
Het zou helemaal mooi zijn als ik de url nog fraaier kan maken (dus zonder click.php?=).
Wellicht met een doorlink in SH404SEF naar de click.php……
Iemand al ervaring mee?
2 februari, 2011 at 18:53
waarom niet affiliate links in individuele php scripts zetten en alle php scripts in een aparte map die je bv aff noemt en deze aff map vervolgens in de robots.txt disallowen.
het individuel php script ziet er zo uit:
en de link op je site bijvoorbeeld:
<a href="http://www.jouwwebsite.nl/aff/individueel affiliate script.php" target="_blank" rel="nofollow"
en dan dus in de robots.txt het bestandje aff disallowen en al je individuele affiliate php scripts uploaden in de map aff die je dus op je server apart even moet aanmaken.
2 februari, 2011 at 18:55
het php script is niet te zien dus probeer ik het nogmaals
2 februari, 2011 at 18:57
nou laatste poging:
php
header (“Location: http://clicks.m4n.nl/_c?zid=706565″);
misschien werkt het zo. let op het script moet beginnen met maar om de een of andere reden kan dit niet in deze blog.
4 februari, 2011 at 15:47
@Rob,
Dat is ook zeker een mogelijkheid.
Met
moet het lukken.
4 februari, 2011 at 15:49
Je kunt trouwens code highlighting gebruiken op ons blog.
[codetaal - bijv: php]
Plak hier je code
[/codetaal - bijv: php]
7 augustus, 2011 at 0:17
Ik wil dit topic toch nog even aanhalen, al besef ik dat het een oud item is. (hopelijk reageert nog iemand)
Moet je als dit heb toegepast (het werkt prima) ook nog de nofollow link gebruiken?
Je opent tenslotte een eigen pagina die google niet indexeert omdat dit in robots.txt is aangegeven.
Het gaat me namelijk om de Panda update. Doordat mensen gelijk op de goede landingspagina komen, klikken ze niet door. Maar omdat er een ‘nofollow’ staat op mijn affiliate links (die dus via de geblokkeerde eigen pagina gaan) worden deze niet meegenomen in google-analytics en dus (neem ik aan) ook niet in google zelf.
Hierdoor krijg je weinig pagina’s per gebruiker en weinig tijd op de site. Simpelweg omdat google het niet ziet / mag zien. Het opheffen van de rel=nofollow zou denk ik veel oplossen. Dus die wil ik graag kwijt.
Dus mag de nofollow weg na toepassen van het cloaken of denk ik verkeerd?
Alvast bedankt voor een eventuele reactie.
8 augustus, 2011 at 12:19
Het verstandigst lijkt mij het toevoegen van ‘click.php’ (of hoe je dat bestand ook gaat noemen) aan je robots.txt met een nofollow, noindex.
8 augustus, 2011 at 14:15
Bedankt voor je reactie.
Dat heb ik meteen gedaan. Dus is dan nog nodig een ‘nofollow’ toe te voegen vanuit de pagina waarin deze wordt aangeroepen? Je verwijst immers naar een pagina die google niet indexeert. Dus is het geen affiliate link… toch?
9 augustus, 2011 at 12:44
Precies, het toevoegen van nofollow is dan niet meer nodig.
9 augustus, 2011 at 17:35
Bedankt. Ik dacht het al, maar durfde het niet te wagen.
2 oktober, 2011 at 16:39
Ik hoop dat iemand nog dit topic volgt.
Want alhoewel het perfect werkt is er toch een ‘probleem’. Omdat er geen Google analytics of andere statistieken code in de pagina staat valt er verder niets meer te traceren. Je kunt dus niet zien hoeveel en welke links er worden aangeklikt door de bezoeker. Binnen Google analytics en andere statistiek programma’s vindt je (logischerwijs) niets terug van deze links. Ik zou graag een statistiekcode in deze pagina willen, maar dat is dat wel mogelijk? Er is geen body tag. Kan dat op één of ander manier toch?
Er zijn als affiliate meerdere redenen om te weten welke links populair zijn en dan kun je kijken hoe belangrijk de locatie van een link is. Natuurlijk kun je het aantal zien binnen de affiliate netwerk software, maar ik zou het graag op de pagina zelf zien. (Wat met Google analytics kan)
4 oktober, 2011 at 11:16
Je kan op deze pagina prima een Google Analytics tag toevoegen. Het toevoegen van een bodytag is niet noodzakelijk, maar wel mogelijk. Plaats dan bovenaan de pagina en onderaan de pagina
Als je het database voorbeeld gebruikt zou je ook zelf een count-veld kunnen toevoegen aan de tabel met urls, en d.m.v. een update-query het getalletje in de database per pageload 1 kunnen verhogen.
4 oktober, 2011 at 17:31
Ik heb werkelijk een uur geprobeerd en het lukte niet.
Nu begin ik opnieuw en nu werkt het plotseling wel (zonder body tag)
Blijkbaar ergens een ticvautke
Dat van de database ga ik zeker ook toepassen. Bedankt!