Gestion des erreurs sous WordPress

Gestion des erreurs sous WordPress

Tout webmaster qui se respecte doit savoir gérer correctement les erreurs de consultation de son site, comme les attaques nombreuses dont font l’objet nos sites web favoris. WordPress en tête puisque c’est le CMS le plus populaire de la planète, donc le plus en vue des hackers. En fait, la gestion des erreurs vaut pour une bonne moitié du travail d’un développeur : combien de fois sommes nous tombés devant une page blanche avec quelques textes sans signification ? Chacune doit donc être traitée pour obtenir un résultat aussi lisible par un visiteur que par un moteur. Ce qui n’est pas la même chose.

En dehors des recommandations les plus classiques que l’on peut lire ici ou là sur divers tutoriels, notamment la mise à jour régulière et systématique du moteur et de ses plugins, il existe des extensions qui permettent de gérer les erreurs mieux que la gestion par défaut du CMS (erreur 404 : la page n’existe pas). Rappel des codes HTTP courants :

  • 200 OK, la page est « servie » sans erreur ; c’est le code normal reçu pour tout appel de page correct
  • 301 moved permanently, la page n’existe plus et elle est déplacée/remplacée
  • 302 found, qui indique une redirection temporaire sans demander l’indexation du contenu cible
  • 304 not modified, qui ne requière pas de chargement car elle est en cache
  • 403 forbidden signifie que l’accès est interdit
  • 404 not found, la page n’existe pas… mais on n’en sait pas plus
  • 500 internal server error, erreur passe partout pénible, qu’on peut provoquer avec une mauvaise écriture

Rappelons que la répétition ou l’augmentation d’erreurs 404 pénalisent un site au regard des moteurs tels que Google. Contrairement à l’erreur 301 qui indique aux robots que la page n’existe plus et qu’elle a été déplacée vers une autre page bien vivante : on remplace une page par une autre.
C’est le code idoine pour, d’une part indiquer aux robots (et visiteurs) un nouveau contenu pertinent, d’autre part éviter le duplicate content, contraire aux bonnes règles du référencement.

Les deux extensions que j’utilise sont Redirection, très puissante, et 404 to 301, plus simple.

La première permet de gérer avec efficacité un déménagement ou changement de site. Les logs sont très complets et les redirections 301 très simple à configurer à la volée, sans éditer le fichier .htaccess et jouer du FTP. Chaque erreur dans les logs voit son pop-up vers une 301 en quelques clics. On peut ensuite suivre les consultations des erreurs ainsi implémentées. Chaque journal des erreurs est configurable en temps, afin de ne pas charge la base de données inutilement.
La seconde est plus spartiate : on redirige toutes erreurs en 301 vers une seule page. On peut corriger à la volée mais l’ergonomie est bien moins bonne que celle de Redirection. Le souci majeur : les logs se chargent sans limite de temps ou nombre (bien qu’il existe un module payant permettant de gérer ces logs).
J’utilise donc les deux extensions l’une après l’autre :

  • Redirection pour gérer un déménagement ou une refonte et étudier les erreurs fâcheuses, oubliées dans mon fichiers .htaccess
    Notez que ce dernier reste le premier rempart de votre site : il gère les plus grosses erreurs en amont du code PHP traité en envoyé par le serveur Apache. Vous trouverez plus bas quelques exemples  de traitement (ce n’est pas l’objet de cet article).
    Notez enfin que Redirection permet de récupérer les règles renseignées à la volée dans un code compatible avec ce fichier.
  • 404 to 301 quand cette étude est terminée : grâce à Google for webmaster et Analytics, je vérifie la bonne marche du site.

En vue de ne pas charger inutilement le serveur et la base de donnée j’ai créé ma propre page d’erreur « en dur », écrite en PHP est très simple à mettre en place. Ce fichier (ex. erreur.php) est placé à la racine du site et totalement indépendant du CMS.
Pourquoi ne pas laisser le plugin gérer ces erreurs ? Très simple : une fois que le travail de redirection est fait correctement, l’essentiel des erreurs vient d’attaques, parfois brutes. En les redirigeant sur la page d’accueil ou une autre page WordPress, on ajoute autant de connexions supplémentaires (donc requêtes PHP et MySQL) inutiles.

Après avoir testé cette solution ici voici comment la mettre en place :

  1. uploader le fichier erreur.php (code ci-dessous)
  2. après l’instruction « RewriteEngine On » ajouter une règle dans votre fichier .htaccess :
    RewriteRule ^page-404-to-301 erreur.php [L]
  3. sous WordPress via le menu « 404 to 301/404 settings » :
    Renseigner le champ « Custom URL » avec une adresse virtuelle identique à la règle ci-dessus (ex. http://mon_site/page-404-to-301) car le plugin utilise la fonction trailingslashit() : un slash est automatiquement ajouté à la fin de l’URL, conformément aux normes du CMS.
    Si vous choisissez de conserver l’archivage des logs dans un fichier (cf. variable $fichierlog) désactivez les logs dans l’extension : ligne « Log 404 Errors » sélectionner « Disable Error logs ». Cet archivage est limité à $maxi lignes et accepte un seul fichier de backup.

Fichier « erreur.php »

Alternative : fichier « erreur.html »

La page ci-dessus est écrite en PHP car j’ajoute certaines options et conditions, sur du multi-hébergement. Si l’on souhaite gagner encore de la ressource, le mieux est encore une page HTML qui sera servie encore plus rapidement ! Aucune interaction possible : il faut conserver les logs dans 404 to 301 afin de pister les sources d’erreurs.
Remplacer « URL » et « URL_image » dans le code ci-dessous et ajouter la règle suivante dans le fichier .htaccess :
RewriteRule ^page-404-to-301 erreur.html [L]

Quelques règles de redirection du fichier « .htaccess »

Notez que l’écriture d’un tel fichier est soumis à votre expertise : il peut bloquer totalement un serveur (erreur 500) si une seule ligne est mal écrite. Ne modifiez que ce que vous êtes certain de connaître et testez à chaque upload vers votre serveur. Sinon voyez plus bas.

Le fichier « .htaccess » minimum

Spécial débutant 😉 Téléchargez en FTP le fichier existant (s’il existe, voir commentaire), modifiez-le et téléversez.

Laisser un commentaire

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