Mettre en place un système de redirection efficace pour ses liens d'affiliation / parrainage

Il m’arrive de tomber sur des sites ou des blogs comportant des liens affiliés ou de parrainage.

Seulement ces liens ne sont pas affichés en clair.

Au lieu d’être sous la forme

http://affilieur.com?parrain=code-affilié

… Les auteurs des blogs en question effectuent des redirections. Ils afficheront plutôt quelque chose comme

http://monbeausite.com/go/affilieur

Ce qui est tout de même plus joli pour le visiteur, et un peu moins louche qu’en passant par un autre type de redirection.

Et donc ?

Et donc je me suis dit : “Pourquoi pas moi ?” :D

Ma solution

Plutôt que m’encombrer de plugins Wordpress, j’ai songé à une méthode à la fois plus simple et plus efficace.

Le principe

Pour chaque redirection on crée un fichier ayant pour nom le titre de la redirection, et pour contenu l’url désirée.

Le principe est d’examiner le lien de chaque requête. S’il s’agit d’une redirection alors on exécute un script qui ouvre le fichier correspondant, et redirige le visiteur. :)

Vous aurez par exemple un fichier nommé “amazon”, contenant un lien vers https://amazon.fr?tag=code-affilie et cette redirection sera accessible via https://votre-site.com/go/amazon/

Passons maintenant au code !

Le code

Nginx

Sous nginx, dans un fichier de configuration

nano /etc/nginx/sites-enabled/monsite

Ajouter

location ~ ^/go/(\w+)/$ {
    include fastcgi.conf;
    fastcgi_param SCRIPT_FILENAME /chemin_vers_dossier/redirect.php;
    fastcgi_pass php;
}

Ce code analyse la requête et détermine s’il s’agit d’une redirection ou pas. Si oui, on exécute le script redirect.php.

PHP

Nous allons maintenant créer redirect.php

nano /chemin_vers_dossier/redirect.php

Le script est assez simple

<?php
$file = substr($_SERVER['REQUEST_URI'],4,-1);
if(file_exists($file))  header('Location: '.file_get_contents($file));
?>

Il se contente de regarder si le fichier de redirection existe, puis de rediriger vers le lien contenu à l’intérieur ce fichier.

Ajouter / Supprimer des redirections

Placez-vous dans le bon dossier et ajouter le fichier (ici “amazon”)

echo "https://amazon.fr?tag=code-affilie" > amazon

Et pour supprimer cette redirection, c’est un jeu d’enfant

rm amazon

Euh… En quoi est-ce plus simple et efficace ?

Bon, je reconnais que c’est un peu plus ardu à mettre en place que l’installation d’un plugin en 3 clics.

Par contre niveau gestion, ce sera beaucoup plus simple :

  • Si vous possédez plusieurs sites, tout sera centralisé. Cela vous évitera d’installer le même plugin à chaque fois sur chacun de vos sites / blogs.
  • Un ajout, une suppression ou une modification de redirection se répercutera automatiquement sur tous vos sites.
  • Vous utiliserez donc un lien universel <a href="/go/affileur/">Nom du lien</a>. Cela vous épargnera la modification de vos liens en cas de changement de ndd, ou de création d’un nouveau blog.
  • Pas besoin de base de données, la solution est beaucoup moins lourde et plus performante. En effet, lire des fichiers encombrera moins votre serveur que le fait d’aller fouiller dans une bdd.

Suggestions d’améliorations

  • Actuellement on n’accepte que des chiffres et des lettres comme noms de redirection. Vous pouvez adapter selon votre besoin (accepter les tirets par exemple).
  • Le script php ne fait que rediriger, rien d’autre. Pourquoi ne pas y ajouter un module de statistiques (connaître les liens les plus visités, la provenance des clics etc) ?
  • Modifier le contenu des fichiers, afin d’y ajouter d’autres informations qu’une simple url.

A vous de jouer ! :)

John Doe avatar
About John Doe
John Doe's true identity is unknown. Maybe he is a successful blogger or writer. Nobody knows it.
comments powered by Disqus