Gérer l’erreur 404

Erreur 404. Pas le message d'accueil couru par les internautes. Et l'un des pire signaux pour les moteurs de recherche (si ce n'est un mauvais contenu). Alors, que faire ? C'est simple, nous allons voir comment gérer l'erreur 404 (et l'erreur 410, tant que nous y sommes).

Cet article prend 7 minutes à lire et comporte 1709 mots.

J’ai récem­ment chan­gé la struc­ture de mon blog, et bien sûr, j’ai fait atten­tion à tout redi­ri­ger cor­rec­te­ment. Tout… enfin tout ce à quoi j’ai pen­sé ?

Google, lui, a indexé des conte­nus qui eux, ne sont pas redi­ri­gés. Et je me retrouve donc avec quelques erreurs 404. Pas sur mon blog, mais sur ma page per­son­nelle, celle où je pré­sente mon activité.

Alors que faire ? Quelles sont les solu­tions à une erreur 404 ? En prin­cipe, la page d’er­reur 404 est pré­vue dans tout bon thème, c’est le modèle 404.php, et le Codex WordPress nous explique com­ment créer cette page. Au-delà du prin­cipe, inté­res­sons-nous au trai­te­ment concret.

La réponse simple est soit une page d’er­reur 404 per­son­na­li­sée, soit une redi­rec­tion. Mais dans les faits, c’est un peu plus com­pli­qué. Pourquoi ?

Tout sim­ple­ment parce qu’il n’y a pas une rai­son unique à une page non trouvée. 

  • Vous avez pu la sup­pri­mer par erreur. Si elle est encore dans la cor­beille, vous pou­vez la récu­pé­rer, et l’af­faire est classée.
  • Ou vous pou­vez avoir sup­pri­mé une page, volon­tai­re­ment. Pour que son conte­nu ne figure plus sur votre site.
  • Mais le pro­blème peut aus­si venir d’une restruc­tu­ra­tion de l’ar­chi­tec­ture de votre site. Par exemple si vous avez chan­gé la struc­ture des permaliens.
  • Vous pou­vez aus­si avoir migré tout ou par­tie de votre conte­nu sur un autre domaine.
  • Pour finir, l’a­dresse peut avoir été mal ren­sei­gnée par l’internaute.

Et en fonc­tion du cas de figure, la solu­tion ne sera pas for­cé­ment une redi­rec­tion, ou, tout au moins, pas la même redirection.

Avant de pas­ser en revue chaque cas de figure, je vous pré­sente l’indispensable…

Redirection, l’extension qui gère l’erreur 404

Si vous n’a­vez jamais ins­tal­lé d’ex­ten­sion pour WordPress, je vous recom­mande la lec­ture de l’ar­ticle Installer, acti­ver, mettre à jour et sup­pri­mer une exten­sion WordPress.

Installez l’ex­ten­sion, acti­vez-la. Pas vrai­ment besoin de la confi­gu­rer, elle fonc­tionne telle quelle. Mais il fau­dra quand même pas­ser par les écrans de configuration.

Vous arri­vez enfin à la page des options :

Options de Redirection

Rien à chan­ger ici non plus, si ce n’est la durée de vie du cache de redi­rec­tion. Réglez-le sur jamais ne période de tests, puis sur indé­fi­ni­ment si vous ne vou­lez pas (du moins dans l’im­mé­diat) chan­ger la struc­ture de votre site.

Vous pou­vez pas­ser aux redi­rec­tions (pre­mier lien en haut à gauche) :

Les redi­rec­tions

Rien de plus simple : vous sai­sis­sez l’URL à redi­ri­ger, l’URL cible et vous cli­quez sur Ajouter une redi­rec­tion. Votre redi­rec­tion est en place.

Pour voir les erreurs 404 sur votre site, ren­dez-vous dans le qua­trième onglet : 404. Voici un exemple, avec ce blog :

Onglet 404

Vous pou­vez gérer vos erreurs ici-même si vous n’a­vez que des erreurs ponctuelles :

Gérer l’er­reur 404

Quelle solution à l’erreur 404 si

Il s’agit d’une erreur de l’internaute

Ce n’est d’ailleurs pas for­cé­ment l’in­ter­naute qui est en cause. Il peut y avoir une coquille dans un lien poin­tant vers votre site, quelque part sur le web. Le résul­tat est le même.

Vous pou­vez avoir un for­mu­laire pour per­mettre au visi­teur d’ef­fec­tuer une recherche sur votre site. Il y a de fortes chances pour qu’il retrouve très vite son che­min, s’il ne s’a­git que d’une erreur de frappe.

Vous pou­vez éga­le­ment ins­tal­ler l’ex­ten­sion WP 404 Auto Redirect to Similar Post, elle n’est pas don­née pour com­pa­tible avec la toute der­nière ver­sion de WordPress, mais fonc­tionne bien quand même.

Voici ce que vous obtien­drez (dans la console de test) si une simi­la­ri­té est trouvée :

Article simi­laire trouvé

Et donc, l’in­ter­naute arri­ve­ra direc­te­ment sur l’ar­ticle qu’il vou­lait lire, en prin­cipe. Vous aurez une entrée 404 géné­rée, et enre­gis­trée éven­tuel­le­ment, en fonc­tion des exten­sions ins­tal­lées sur votre site.

Vous pou­vez l’ins­tal­ler à la place d’une page d ‘erreur 404 per­son­na­li­sée, ou en plus. À défi­nir dans les réglages de l’ex­ten­sion. Si aucune redi­rec­tion n’est trou­vée, la page d’er­reur 404 s’af­fi­che­ra et per­met­tra à l’in­ter­naute de se repérer.

Vous avez supprimé la page par erreur

WordPress ne sup­prime pas défi­ni­ti­ve­ment vos pages et articles. Il les déplace dans la cor­beille, où ils sont en attente d’une deuxième action de votre part : soit vous les sup­pri­mez défi­ni­ti­ve­ment, soit vous les res­tau­rez, sans perte. C’est donc un pre­mier niveau de sécurité.

Si vous avez sup­pri­mé défi­ni­ti­ve­ment l’élé­ment, c’est un peu plus ennuyeux. Tout est fonc­tion de la ges­tion des sau­ve­gardes. Parce que vous effec­tuez régu­liè­re­ment des copies de sécu­ri­té, n’est-ce pas ?

Sinon, il ne vous reste plus qu’à recréer votre conte­nu, ou à gérer l’er­reur 404.

Vous avez volontairement supprimé la page

Il n’empêche, une erreur 404, ce n’est pas très agréable pour l’in­ter­naute. Et ce n’est pas bon pour Google non plus.

Il vau­drait mieux lui envoyer un signal moins néga­tif, après tout, vous avez le droit de sup­pri­mer un conte­nu, mais au moins, dites-le aux moteurs de recherche en indi­quant que la page n’existe plus.

Ce n’est plus un code d’er­reur 404 qui sera ren­voyé, mais un code 410 (Gone). Ils ne cher­che­ront plus à indexer cette ressource.

Si vous n’êtes pas à l’aise avec la console Linux, ne vous pre­nez pas la tête, une erreur 404, c’est déjà mieux que rien. Pour les autres, voi­ci com­ment pro­cé­der, pour les deux ser­veurs web les plus uti­li­sés, NGINX et Apache.

Pour un ser­veur Plesk, le code sui­vant semble ne pas fonc­tion­ner (ni pour NGINX, ni pour Apache). Si quel­qu’un a déjà ten­té, je suis preneur !

Pour NGINX, vous aurez à décla­rer les URL supprimées :

map $request_uri $gone_var {
  /mon-article-supprime/ 1;
  /mon-autre-article-supprime/ 1;
}

Puis à indi­quer au ser­veur où se rendre :

server {
    ....

    error_page 410 @gone;

    if ($gone_var) {
        return 410;
    }

    location @gone {
        rewrite ^(.*)$ /erreur-410/ break;
    }

    ....
}

Pour Apache, la liste des URL s’ef­fec­tue ainsi :

# Pour un article :
Redirect 410 /mon-article-supprime/
Redirect 410 /mon-autre-article-supprime/
# Pour un répertoire complet :
RedirectMatch gone "/repertoire-supprime/*$"

410 ou gone ? Peu importe, les deux sont inter­chan­geables, le résul­tat sera le même.

Vous aurez ensuite à décla­rer la page d’erreur :

ErrorDocument 410 /erreur-410/

Vous avez déplacé votre site

C’est un cas de figure assez simple à trai­ter. Il suf­fit de décla­rer aux moteurs de recherche le nou­vel empla­ce­ment, en uti­li­sant le code 301 (Moved Permanently). Ils iront cher­cher la res­source là où elle se trouve désor­mais. Si rien n’a chan­gé dans la struc­ture de votre site, une simple ligne suf­fit à gérer la redirection.

Pour NGINX, voi­ci la syn­taxe, à pla­cer dans le fichier de confi­gu­ra­tion du site d’o­ri­gine :

rewrite ^(.*) https://nouveau-domaine.com/$1 permanent;

Pour Apache, la syn­taxe sera (à pla­cer dans le fichier .htaccess) :

RewriteRule ^(.*)$ https://nouveau-domaine.com/$1 [R=301,L]

En fait, ce n’est pas une erreur 404, la res­source ne serait trai­tée comme telle que si vous ne décla­riez pas la nou­velle URL. C’est une redi­rec­tion, avec le code 301 parce que la res­source est dépla­cée de manière per­ma­nente.

Si vous n’êtes pas à l’aise avec les fichiers sys­tème, l’ex­ten­sion Redirection peut tout gérer pour vous, ou tout au moins vous indi­quer quoi faire exactement.

Par contre, en cas de chan­ge­ment de nom de domaine, pré­voyez quelques jours de bat­te­ment avant de tout sup­pri­mer de l’emplacement d’o­ri­gine, ou avant la rési­lia­tion du nom de domaine, le temps que les moteurs de recherche passent sur votre site et récu­pèrent les bonnes informations.

Vous avez modifié la structure de votre site

Avant de migrer votre site, récu­pé­rez l’en­semble des per­ma­liens actuels et faites une copie de sécu­ri­té, au cas où la migra­tion tour­ne­rait court. Vous pour­rez ain­si retrou­ver l’en­semble de vos données.

Si vous avez déjà migré, une sau­ve­garde sera d’ailleurs plus qu’u­tile 🙂 Commencez par recréer votre site en local, ou dans un envi­ron­ne­ment de test avec la der­nière sau­ve­garde avant modi­fi­ca­tion de la struc­ture.

Installez et acti­vez WP All Export. Cette exten­sion va en quelque sorte vous sau­ver la vie.

Vous trou­ve­rez un guide pour cette exten­sion dans l’ar­ticle Exportez vos don­nées WordPress avec WP All Export (et impor­tez-les avec WP All Import).

Installez et acti­vez éga­le­ment Redirection.

Choix de l’élé­ment à exporter

Exportez uni­que­ment les per­ma­liens, au for­mat CSV.

Vous aurez ain­si une liste com­plète des vos anciennes URL, une par ligne. Vous aurez besoin de modi­fier le nom de domaine, mais c’est un moindre mal, un simple recher­cher / rem­pla­cer tout dans un édi­teur de texte suffira.

Répétez l’o­pé­ra­tion sur votre nou­veau site (ins­tal­la­tion de l’ex­ten­sion et expor­ta­tion des permaliens).

Ouvrez vos fichiers CSV, et récu­pé­rez les per­ma­liens du second, un à un, pour les faire cor­res­pondre aux per­ma­liens de l’an­cienne struc­ture, dans une deuxième colonne (B pour Excel et la majo­ri­té des tableurs, ou après une vir­gule sur la même ligne, si vous avez ouvert les fichiers CSV dans un édi­teur de texte).

Sauvegardez au for­mat CSV (en fait, c’est du texte brut, avec un sépa­ra­teur tel qu’une vir­gule, un point-vir­gule ou une tabu­la­tion, ni plus ni moins).

Dans Redirection (l’ex­ten­sion), impor­tez le CSV avec ses deux colonnes, et le tour est joué.

Bon d’ac­cord, si vous avez 900 articles et / ou 800 pages, vous allez y pas­ser un moment. Mais c’est le prix à payer pour récu­pé­rer une struc­ture cor­recte, ne pas avoir un site tout cas­sé, et pour ne pas oublier la pro­chaine fois (enfin, j’es­père pour vous).

Désactivez et sup­pri­mez l’ex­ten­sion WP All Ιmport, et véri­fiez que les redi­rec­tions sont correctes.

Voila, vous en avez fini avec vos erreurs 404 (enfin, celles liées à la struc­ture du site).

Derniers conseils

Soignez votre page d’er­reur 404. Les inter­nautes qui arri­ve­ront sur votre site vous en sau­ront gré. Et si elle est vrai­ment spé­ciale, qui sait, elle sera même source d’attraction 😉

À titre d’exemple, voi­ci la page dédiée sur ce site :

page d'erreur 404
page d’er­reur 404

Vous pou­vez vous y rendre via l’URL tsw.ovh/erreur-404/ si vous vou­lez la tes­ter — mais dans ce cas, aucune erreur 404 ne sera générée ?

Avant de mettre en ligne vos chan­ge­ments, réa­li­sez un che­ckup com­plet de votre site et des URL avant / après. Plutôt deux fois qu’une, d’ailleurs. On n’est jamais trop pru­dent. N’oubliez pas les fichiers médias, qui peuvent eux aus­si être indexés par Google et peuvent consti­tuer une part non négli­geable de votre trafic.

Ce che­ckup vous per­met­tra de véri­fier qu’au­cune URL n’a été oubliée quand vous aurez mis en ligne votre nou­velle struc­ture. Et de déter­mi­ner com­ment gérer vos redi­rec­tions, en fonc­tion de l’an­cienne et de la nou­velle structure.

Et en apar­té, je serais sur­pris qu’il n’en reste pas quelques unes, per­dues dans la nature ?

Et vous, com­ment gérez-vous l’er­reur 404 ?

Retour en haut
We use cookies in order to give you the best possible experience on our website. By continuing to use this site, you agree to our use of cookies.
Accept