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 changé la struc­ture de mon blog, et bien sûr, j’ai fait atten­tion à tout redi­ri­ger correc­te­ment. Tout… enfin tout ce à quoi j’ai pensé ?

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 person­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 comment créer cette page. Au-delà du prin­cipe, intéressons-nous au trai­te­ment concret.

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

Tout simple­ment parce qu’il n’y a pas une raison unique à une page non trouvée. 

  • Vous avez pu la suppri­mer par erreur. Si elle est encore dans la corbeille, vous pouvez la récu­pé­rer, et l’af­faire est classée.
  • Ou vous pouvez avoir supprimé une page, volon­tai­re­ment. Pour que son contenu ne figure plus sur votre site.
  • Mais le problème peut aussi venir d’une restruc­tu­ra­tion de l’ar­chi­tec­ture de votre site. Par exemple si vous avez changé la struc­ture des permaliens.
  • Vous pouvez aussi avoir migré tout ou partie de votre contenu sur un autre domaine.
  • Pour finir, l’adresse peut avoir été mal rensei­gnée par l’internaute.

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

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

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

Si vous n’avez jamais installé d’ex­ten­sion pour WordPress, je vous recom­mande la lecture de l’ar­ticle Installer, acti­ver, mettre à jour et suppri­mer une exten­sion WordPress.

Installez l’ex­ten­sion, activez-la. Pas vrai­ment besoin de la confi­gu­rer, elle fonc­tionne telle quelle. Mais il faudra quand même passer par les écrans de configuration.

Vous arri­vez enfin à la page des options :

Gérer l'erreur 404
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 voulez pas (du moins dans l’im­mé­diat) chan­ger la struc­ture de votre site.

Vous pouvez passer aux redi­rec­tions (premier lien en haut à gauche) :

Gérer l'erreur 404
Les redi­rec­tions

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

Pour voir les erreurs 404 sur votre site, rendez-vous dans le quatrième onglet : 404. Voici un exemple, avec ce blog :

Gérer l'erreur 404
Onglet 404

Vous pouvez gérer vos erreurs ici-même si vous n’avez que des erreurs ponctuelles :

Gérer l'erreur 404
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 forcé­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 pouvez avoir un formu­laire pour permettre 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 chemin, s’il ne s’agit que d’une erreur de frappe.

Vous pouvez égale­ment instal­ler l’ex­ten­sion WP 404 Auto Redirect to Similar Post, elle n’est pas donnée pour compa­tible avec la toute dernière version de WordPress, mais fonc­tionne bien quand même.

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

Gérer l'erreur 404
Article simi­laire trouvé

Et donc, l’in­ter­naute arri­vera direc­te­ment sur l’ar­ticle qu’il voulait 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 instal­lées sur votre site.

Vous pouvez l’ins­tal­ler à la place d’une page d ‘erreur 404 person­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­chera et permet­tra à l’in­ter­naute de se repérer.

Vous avez supprimé la page par erreur

WordPress ne supprime pas défi­ni­ti­ve­ment vos pages et articles. Il les déplace dans la corbeille, où ils sont en attente d’une deuxième action de votre part : soit vous les suppri­mez défi­ni­ti­ve­ment, soit vous les restau­rez, sans perte. C’est donc un premier niveau de sécurité.

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

Sinon, il ne vous reste plus qu’à recréer votre contenu, 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 vaudrait mieux lui envoyer un signal moins néga­tif, après tout, vous avez le droit de suppri­mer un contenu, 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 renvoyé, 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 prenez pas la tête, une erreur 404, c’est déjà mieux que rien. Pour les autres, voici comment procé­der, pour les deux serveurs web les plus utili­sés, NGINX et Apache.

Pour un serveur Plesk, le code suivant semble ne pas fonc­tion­ner (ni pour NGINX, ni pour Apache). Si quel­qu’un a déjà tenté, 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 serveur 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 suffit de décla­rer aux moteurs de recherche le nouvel empla­ce­ment, en utili­sant le code 301 (Moved Permanently). Ils iront cher­cher la ressource là où elle se trouve désor­mais. Si rien n’a changé dans la struc­ture de votre site, une simple ligne suffit à gérer la redirection.

Pour NGINX, voici la syntaxe, à placer dans le fichier de confi­gu­ra­tion du site d’ori­gine :

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

Pour Apache, la syntaxe sera (à placer dans le fichier .htaccess) :

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

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

Si vous n’êtes pas à l’aise avec les fichiers systè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 batte­ment avant de tout suppri­mer de l’emplacement d’ori­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 perma­liens actuels et faites une copie de sécu­rité, au cas où la migra­tion tour­ne­rait court. Vous pour­rez ainsi retrou­ver l’en­semble de vos données.

Si vous avez déjà migré, une sauve­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 dernière sauve­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 sauver la vie.

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

Installez et acti­vez égale­ment Redirection.

Gérer l'erreur 404
Choix de l’élé­ment à exporter

Exportez unique­ment les perma­liens, au format CSV.

Vous aurez ainsi une liste complè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 / rempla­cer tout dans un éditeur de texte suffira.

Répétez l’opé­ra­tion sur votre nouveau site (instal­la­tion de l’ex­ten­sion et expor­ta­tion des permaliens).

Ouvrez vos fichiers CSV, et récu­pé­rez les perma­liens du second, un à un, pour les faire corres­pondre aux perma­liens de l’an­cienne struc­ture, dans une deuxième colonne (B pour Excel et la majo­rité des tableurs, ou après une virgule sur la même ligne, si vous avez ouvert les fichiers CSV dans un éditeur de texte).

Sauvegardez au format CSV (en fait, c’est du texte brut, avec un sépa­ra­teur tel qu’une virgule, un point-virgule 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 passer un moment. Mais c’est le prix à payer pour récu­pé­rer une struc­ture correcte, ne pas avoir un site tout cassé, et pour ne pas oublier la prochaine fois (enfin, j’es­père pour vous).

Désactivez et suppri­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 sauront gré. Et si elle est vrai­ment spéciale, qui sait, elle sera même source d’attraction 😉

À titre d’exemple, voici la page dédiée sur ce site :

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

Vous pouvez vous y rendre via l’URL tsw.ovh/erreur-404/ si vous voulez la tester – mais dans ce cas, aucune erreur 404 ne sera générée ?

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

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

Et en aparté, je serais surpris qu’il n’en reste pas quelques unes, perdues dans la nature ?

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

Retour en haut
Les cookies que nous utilisons sont indispensables au bon fonctionnement de ce site. Il n'y a aucun pistage publicitaire et les données statistiques recueillies sont anonymisées.
J'ai compris