L’erreur 404 est renvoyée par un serveur HTTP pour indiquer que la ressource demandée (généralement une page web) n’existe pas. Certains navigateurs web affichent alors le message “404 File Not Found” (fichier non trouvé). _Wikipedia
Les liens cassés (aussi appelés liens brisés ou liens morts) sont des liens hypertextes pointant vers une URL qui n’existe pas ou plus et qui conduisent inévitablement vers une page blanche et son désolant “Impossible de trouver la page”
Corrigez vos erreurs 404 !
La page 404 est monnaie courante pour quiconque gère un site Web. Et parfois, la gestion de ces erreurs lors de l’utilisation d’un CMS comme WordPress peut être encore plus difficile.
WordPress a des paramètres par défaut pour le traitement des 404, mais ils laissent encore à désirer. Alors, comment faire pour y apporter des améliorations? Et plus important encore, comment empêcher ces erreurs 404 en premier lieu?
Les principales causes d’erreur 404 sous WordPress
Les 404 dans WordPress sont le plus souvent causées en raison d’un changement dans la structure de permalien du site. Si un propriétaire de site modifie la structure des permaliens de son blog WP, ce dernier est susceptible de finir avec des liens entrants pointant vers des pages qui ne sont plus situées à la bonne adresse. Cela signifie les visiteurs entrants seront amenés sur une page 404 au lieu du contenu qu’ils cherchaient.
L’erreur 404 peut également se situer dans le code de votre index.php ou search.php. Si il y a une erreur dans le code de l’un de ces fichiers, alors il se peut qu’il retourne des résultats avec des adresses invalides.
Une autre erreur commune, le mod_rewrite n’est pas installé sur votre serveur. Pour utiliser les permaliens (monsite.com/nomdemonarticle/), vous devez avoir le module mod_rewrite installé sur votre serveur. Si vous essayez d’utiliser les Permaliens et que vous obtenez des erreurs, c’est la première chose à vérifier.
Les risques de la 404 pour votre site
Le premier risque et non des moindres, le taux de rebond. En effet, si un visiteur arrive sur une page d’erreur au lieu de l’article qu’il attendait… il y a de fortes chances pour qu’il aille voir ailleurs. Nous verrons plus bas qu’on peut limiter la casse en modifiant notre 404 et en la rendant plus optimale/attrayante.
Enfin les moteurs de recherche et leur indexation perpétuelle, risquent de vous pénaliser si vos 404 sont trop importantes et de fait, vos liens non valides…
Comment se protéger des erreurs 404 ?
La meilleure des méthodes c’est d’être prévoyant ! Dès le départ, faites le bon choix dans la structure de vos permaliens et n’y revenez pas (si possible;).
Retrouvez ci-dessous une liste de 6 plugins WordPress pour vous y aider, l’aide de Google Webmaster Tools et un bout de code en bonus.
Des plugins WordPress pour vos 404
Les plugins gratuits ci-dessous servent à la prévention de vos erreurs 404.
404 Notifier
Ce plugin vous signalera toute erreur 404 à venir sur votre site. Il s’agit d’un plugin très utile à utiliser si vous changez votre structure de permaliens.
WP 404 Images Correction
Ce plugin vous permet de remplacer les images qui renvoient une 404 avec une image par défaut de votre choix. Vous avez également la possibilité d’ajouter une classe à la balise img ou masquer entièrement l’image si elle est manquante.
Redirection
Ce plugin surveille les erreurs 404 et vous permet de gérer des redirections 301. Il vous permet également de définir une redirection personnalisée qui vous permet de passer une URL vers une autre page, un fichier ou site web. Il crée un journal complet de toutes les redirections et peut être configuré pour rediriger en fonction de l’état de connexion ou d’autres paramètres.
404 redirected
Le plugin 404 redirected enregistre toutes les URL que les utilisateurs ont visité et permet à l’administrateur de créer facilement des redirections 301 et 302 vers des pages valides. Les redirections peuvent également être créés sur la base du meilleur résultat possible en fonction de l’URL recherchée.
Permalink Finder Plugin
Le Plugin Permalink Finder détecte si WordPress ne peut pas trouver un permalien. Avant de générer une 404, le plugin tente de localiser des articles aux mots similaires. Il le fait en cherchant dans la base de données et en essayant de trouver l’une des valeurs de mots de la mauvaise URL. Il prend ainsi le meilleur ratio requête/recherche et alors, plutôt que d’émettre une erreur 404, il renvoie une redirection vers la page correcte.
Simple 301 Redirects
Simple 301 offre une méthode simple pour rediriger les requêtes vers une autre page sur votre site ou ailleurs sur le web. C’est particulièrement pratique lorsque vous migrez un site WordPress et que vous ne pouvez pas conserver l’ancienne structure de vos URLs.
Google Webmaster Tools recense vos 404
Google Webmaster Tools recense vos erreurs et vous aide à les corriger. Si vous ne l’avez pas encore fait, je vous conseille (encore;) de vous y inscrire et de vérifier vos liens.
Astuce bonus: Corriger les erreurs 404 de pagination
Sous WordPress nous pouvons changer le nombre d’articles affichés dans nos pages archives (Réglages>>Lecture>>Les pages du site doivent afficher au plus XX articles), problème si nous passons de 20 articles affichés à 30 alors la page //wpformation.com/wordpress/page/5/ n’existera probablement plus… et retournera une magnifique 404.
C’était sans compter sur ce bout de code de l’ami Julio Potier qui a concocté une fonction permettant, si la pagination n’existe pas/plus, de rediriger automatiquement vers la page 0 de l’archive. Ainsi si //wpformation.com/wordpress/page/5/ n’existe plus alors vous serez redirigé automatiquement vers //wpformation.com/wordpress/. Ce code est à placer dans le fichier functions.php de votre thème.
// 404 PAGINATION
add_action('template_redirect', 'baw_template_redirect_no_404_pagination' );
function baw_template_redirect_no_404_pagination() {
// Récupération de la variable "paged"
$paged = get_query_var( 'paged' );
// Si nous sommes sur une page 404 avec une page > à 0
if( is_404() && $paged > 0 ):
global $wp_rewrite;
$url = preg_replace( "#/$wp_rewrite->pagination_base/$paged(/+)?$#", '', $_SERVER['REQUEST_URI'] );
wp_redirect( $url, 301 );
die();
endif;
}
Conclusion : Soignez votre page 404 !
Il y aura toujours des 404, vous ne maîtriserez jamais tous les liens pointant vers votre site. Il est donc important d’avoir une 404 “utile”, avec un message clair et pourquoi pas un moteur de recherche interne ou des liens vers vos principales catégories ou même votre Home.
Faites aussi preuve de créativité ou d’audace, votre site affiche une 404 c’est le moment d’avoir de l’humour, pour l’inspiration voici des exemples de pages 404 WordPress originales.
Merci pour toutes ces astuces.
Petite question, est il possible de supprimer une url non valide de la base Mysql, pour concrètement la supprimer à la place d’une redirection ?
Bonjour @Benji, concrètement oui mais cela ne résoudra pas le problème de la 404 ;)
Bonjour Fabrice,
J’en ai tellement mangé des erreurs 404 que rien qu’à voir “404” ça me hérisse le poil :) !
Du coup je n’ai pas “aménagé ma propre page 404”. Il paraît que c’est très facile, moi je n’ai toujours pas réussi …. Suis un peu nulle en technique (je te l’avais dit !)
J’ai tenté un plugin mais c’était “moche” et … trop de plugins tuent le plugin.
Je vais donc regarder avec attention les articles cités …
Question : pour placer des “codes” dans le fichier functions.php il vaut mieux “sortir” la page et le faire avec Notepad++ ?
Salut @Anne,
Oh que oui, c’est mieux et plus sûr. Si possible avec sauvegarde de l’original et FTP à porté de main;)
Personnellement, si l’on peut éviter un énième plug-in pour sn site, cela permettra de ne pas alourdir le site de requêtes qui peuvent être évitées. Un bon Webmaster Tools et un fichier Excel des familles feront largement l’affaire.
Bonjour Fabrice,
Très bon article comme d’habitude, cependant une question; j’utilise le plugin redirection depuis février et je ne retrouve pas du tout les mêmes 404 entre le Google webmaster tool et le plugin lui même c’est normal ?
Deuxième remarque, j’avais un dossier contenant beaucoup de PDF, et depuis mon passage à la version 3.0 du site je l’ai supprimé, cela me génère beaucoup de 404 provenant de sites aspirateurs de pdf; je les ai donc “bannis” via le htacces (ex : deny from cherchez.me) c’est efficace ou ça ne sert à rien ?
Salut @Laurent,
GWT a souvent un temps de retard et entre les erreurs corrigées, il peut y avoir une différence. Le journal de redirection te donnera aussi pas mal d’infos.
Concernant tes PDFs, tu devrais une redirection globales des *.pdf de tout le répertoire vers une URL de ton choix.
J’ai suivi quelques liens que tu as donnés et j’ai l’impression que pour un Framework c’est différent ? Bref … J’avoue, j’ai mis de côté pour plus tard et en attendant j’ai installé un plugin à la place … :(
@Anne, tu parles de la mise en place d’une 404 personnalisée?
Oui pour un framework cela peut être particulier (cf Genesis), sinon jettes un œil là dessus http://code.tutsplus.com/articles/how-to-create-a-simple-404-error-page-for-wordpress-themes–wp-22043 ou bien encore là http://www.1stwebdesigner.com/wordpress/how-to-create-a-custom-error-404-page-for-wordpress/
@Fabrice oui c’est bien de ce la que je parle
Merci pour les liens je vais regarder.
Le framework c’est bien pour quelqu’un qui s’y connaît je trouve, je reste moi dans la base, même si je comprends au fur et à mesure (encore du chemin)
@Fabrice pour information j’ai voulu tester le code donné dans cet article et j’ai eu un souci, je pensais que cela venait du thème / framework Canvas mais en fait non cela vient bien du code.
Explications : avec le code, lorsque je cliquais sur mes catégories, j’avais une boucle de redirection dès que je voulais voir les anciens billets. Les plugins n’étaient pas en cause, j’ai réinstallé le thème, de plus il y avait une mise à jour du framework du coup le fichier functions.php était d’origine.
J’ai remis mon functions.php contenant le code défini dans cet article et un code pour le fil d’ariane de Yoast (c’est tout ce qu’il y avait en plus) et à nouveau la boucle de redirection.
J’aurais aimé comprendre … si possible :)
Merci
Salut @Anne, lors du bug, avais-tu activé sous Yoast le paramètre “Forcer la réécriture des titres” ?
Non ce n’est pas activé