Prestashop et cloacking PHP : amélioration du crawl budget

Nous en parlons depuis plus de 10 ans, le cloacking est toujours aussi tendance. Webinar Semrush, BlendWebMix, SEO Camp, Google Black Day et j’en passe, font tous mention au moins une fois en 2017 du cloacking, et plus particulièrement du cloacking white hat dans l’objectif de bloquer une page ou de cacher des liens à Google.

Il y a une grosse différence entre le white et le black hat en cloacking. Je déconseille le cloacking black hat. Voici une liste de différences.

Black Hat :

  • changer du contenu pour Google bot
  • changer du contenu pour adwords
  • cloacker des liens externes

White Hat :

  • cloacker des liens internes
  • bloquer une page à Google

L’amélioration du crawl budget n’est plus réservé aux gros sites. Tout le monde devrait en prendre compte. Pour ce faire, j’ai utilisé le script de Patrick Valibus ( https://www.in-cloaking-veritas.com/ ). Lisez la doc dans un premier temps.

Ajoutez le framework dans un dossier « cloacking » a la racine de votre hébergement avec les fichiers install.php, cron.php et un fichier index.php vide. Après l’installation du framework (il faut configurer le fichier connect.php), renommer le fichier install.php en install.php.old ou supprimez le complètement.

Créer le fichier FrontController.php dans le dossier /override/classes/controller/ et collez-y le code ci-dessous :

<?php

    class FrontController extends FrontControllerCore
    {
        public static function cloackThis($filename, $content)
        {
            global $smarty;
            $smarty->clearCompiledTemplate($filename);

            require_once($_SERVER['DOCUMENT_ROOT'] . "/cloacking/framework/framework.php");

            $test = new cloaking($_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'], true);
            if ($test->checkIfCloakingOk($cache = true)) {
                return preg_replace('#<a.*?>(.*?)</a>#i', '\1', $content);
            }
            return $content;
        }
    }

Adaptez simplement le chemin de votre framework de cloack dans le require_once. Supprimez le fichier class_index.php du dossier /cache/.

Admettons maintenant que vous souhaitez supprimer tous les liens du footer (mes commandes, mes avoirs, mon compte, a propos, nos CGV, etc). Éditez le fichier footer.tpl de votre thème et modifiez l’appel du HOOK_FOOTER par :

{FrontController::cloackThis($smarty.template, $HOOK_FOOTER)}

Explications

Si vous optimisez cet aspect de votre site, c’est clairement que vous avec mon ambition d’améliorer les performances de votre site. Vous avez donc activé le cache de Prestashop.

Le premier paramètre de la fonction récupère le nom du fichier dans lequel le code est appelé (footer.tpl ici) afin de supprimer la version compilée du template Smarty.

Le second paramètre est le contenu duquel vous souhaitez supprimer tous les liens (le preg_replace). Dans cet exemple, j’ai mis tout le contenu du HOOK.

Rendu utilisateur

Rendu Google

La seule différence est la présence ou non des liens. J’ai fait exprès que cela se voit visuellement mais le cache en mode texte seul est exactement le même ! C’est très important.

Et finalement pour les curieux qui veulent écouter toute la conférence de Patrick au Webinar Semrush :

SEO : Optimiser Magento pour le référencement
Magento et SEO : résultat d'une optimisation poussée

2 Comments on “Prestashop et cloacking PHP : amélioration du crawl budget”

  1. Bonjour
    attention on est bien loin du White Hat
    délivrer un contenu différent pour le user et pour le bot est contraire au guide lines
    sanction possible …
    Il est préférable de faire des liens de redirection JavaScript un peu cryptées comme ça on est dans les clous et on évite de mettre un site dans les choux

  2. Hello,

    Le concept est intéressant, mais personnellement vu comment réagi Google, je ne prendrai pas le risque de le faire chez un client, car à quelque part (sur le principe du bon sens) le résultat affiché devrait être identique pour le BOT et pour l’internaute.

    Ce que je ferai personnellement c’est plutôt de mettre les liens du footer en nofollow et les pages de destination en noindex, mais ça c’est qu’un avis personnel.

    Merci en tout cas d’avoir partagé cette méthode ! ;)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *