Quelques lignes de PHP pour protéger la SERP-diversité

Pour tenter à la fois de limiter l’impact de Google en tant qu’apporteur de trafic sur mon blog et promouvoir d’autres moteurs de recherche pour favoriser la SERP-diversité, j’ai envisagé de proposer un encart spécifique au visiteur en provenance de Google pour qu’il teste sa requête sur d’autres moteurs de recherche. Je vois ça comme une sorte de service après-vente pour ceux qui n’auraient pas trouvés leur bonheur sur ce blog ou pour ceux qui voudraient en savoir plus. Dans ce cas, pourquoi ne pas leur faciliter la tâche ?

Entre les désirs et la réalité, il y a un fossé que je ne pouvais franchir seul, et c’est là qu’intervient Romain avec ce script PHP pour identifier Google comme referrer, isoler la requête et afficher une liste de moteurs de recherche en reprenant la demande de l’internaute.

Pour celà, il suffit de copier-coller ce code à l’endroit où vous voulez afficher la liste des moteurs. Pour ma part, je l’ai placé juste après l’ouverture de la balise div en haut de la sidebar :

<?php $isGoogleReferer = (isset ($_SERVER["HTTP_REFERER"]) && (preg_match('!^http://(www|images).google.[a-z]{2,3}(.[a-z]{2,3})?/!i',
$_SERVER["HTTP_REFERER"]))) ? true : false;
$googleQuery = ($isGoogleReferer && preg_match ('!q=([^&#]*)!i',
$_SERVER["HTTP_REFERER"], $matches)) ? $matches[1] : null;
$googleQuerySanitize = ($googleQuery) ? preg_replace
('![^a-z0-9éèàêùçÇÉÀÈÙs]!i', ' ', rawurldecode ($googleQuery)) : '';
?>

<?php if ($isGoogleReferer && $googleQuery): ?>
    <div id="fromGoogle" class="sidebar-content xoxo">
        <h3>Vous venez de Google via la requête <em><?php echo $googleQuerySanitize;?></em></h3>
        <p>Essayez donc un moteur de recherche différent, pour voir si j'y suis ;)</p>
        <ul>
            <li><a href="http://fr.search.yahoo.com/search?p=<?=$googleQuery;?>"><?=$googleQuerySanitize;?> sur Yahoo!</a></li>
            <li><a href="http://www.exalead.fr/search/results?q=<?=$googleQuery;?>"><?=$googleQuerySanitize;?> sur Exalead</a></li>
            <li><a href="http://fr.altavista.com/web/results?q=<?=$googleQuery;?>"><?=$googleQuerySanitize;?> sur Altavista</a></li>
            <li><a href="http://fr.ask.com/web?q=<?=$googleQuery;?>"><?=$googleQuerySanitize;?> sur Ask</a></li>
            <li><a href="http://search.live.com/results.aspx?q=<?php echo $googleQuery;?>"><?php echo $googleQuerySanitize;?> sur Live</a></li>
        </ul>
    </div>
<!-- End #fromGoogle .sidebar-content .xoxo -->
<?php endif; ?>

Cette liste est facilement modifiable pour s’adapter à vos goûts personnels matière de Search Engine puisqu’il suffit d’isoler la partie précédent la requête (généralement ?q=) pour chaque moteur ou de supprimer l’élément qui vous chagrine. Certains moteurs comme Ixquick utilisent la méthode post pour passer les paramètres de la requête à la page de résultats, ce qui ne permet pas de le mettre dans la liste. Dommage, car c’est un très bon métamoteur de recherche rapide et puissant que j’utilise depuis quelques temps déjà !

Si certains caractères spéciaux apparaissent dans la reprise de la requête à la place des caractères accentués, il suffit d’ajouter les caractères fautifs dans la liste : [^a-z0-9éèàùçÇÉÀÈÙêÊs] and the cat’s in the bag!

PS : Si vous trouvez ce script utile n’hésitez pas à l’utiliser comme bon vous semble et à le faire savoir à l’auteur !