Erreur 404 : trouver une URL à suggérer

La page d’erreur 404 est visible sur les sites web lorsqu’un internaute tente d’accéder une page qui n’existe pas ou plus. Ce problème récurent aux sites web peut faire perdre des visiteurs ou tout du moins réduit la notoriété d’un site lorsqu’il y a de nombreuses pages mortes. Cet article présente une astuce pour agrémenter la page d’erreur 404 par la suggestion d’une URL existante qui pourrait être en rapport avec la page morte.

Problème des URLs mortes

Sur un site web, si une page est supprimée ou déplacée, cela peut résulter par une URL morte. Ce problème d’URLs mortes peut également arriver dans d’autres circonstances: faute de frappes, mauvaises prononciation, URL tronquée involontairement ou lors d’une attaque de type brute force.

Pour éviter de perdre des visiteurs et pour améliorer un peu l’ergonomie d’utilisation, il est recommandé d’utiliser une page d’erreur 404 personnalisée. Cette page peut notamment servir pour:

  • Expliquer aux visiteurs pourquoi ils accèdent une page morte
  • Donner un formulaire de recherche interne pour que l’internaute puisse trouver une URL équivalente
  • Donner la liste des pages les plus populaires (ou des catégories du site)

Solution alternative

Il est possible de trouver une solution alternative à ce problème de page « non trouvée ». Grâce à l’URL morte, il est possible d’avoir une idée d’où l’internaute souhaitait accéder. Car une adresse web, même morte, possède des mots et parfois des mots-clés qui peuvent donner un indice sur l’endroit du site où l’internaute souhaitait accéder. Ceci est particulièrement vrai si l’URL possède juste une petite faute de frappe.

L’idée consiste à utiliser un algorithme de similarité de chaîne de caractères pour trouver une URL semblable. Voici une liste d’algorithme qui pourrait potentiellement convenir:

Dans cette liste il faut toutefois faire un choix. Pour découvrir l’algorithme qui serait le plus à même de suggérer une bonne URL le chapitre suivant présente une série de test.

Test des différents algorithmes

Métriques testées

Les métriques vont être testées de différentes manières pour voir si certaines associations peuvent être bénéfiques. Voici la liste des algorithmes qui seront testés:

  • T1: Levenshtein + « algo début de chaîne » + « algo mots identiques » + similar_text + Soundex
  • T2: Levenshtein + « algo début de chaîne » + « algo mots identiques » + Soundex
  • T3: Levenshtein + « algo début de chaîne » + « algo mots identiques »
  • T4: Levenshtein + « algo début de chaîne » + Soundex
  • T5: Levenshtein + similar_text
  • T6: similar_text
  • T7: Levenshtein + « algo début de chaîne » + « algo mots identiques » + Jaro-Winkler + Soundex
  • T8: Levenshtein
  • T9: coefficient de Dice
  • T10: Jaro-Winkler
  • T11: Jaro-Winkler + Levenshtein
  • T12: coefficient de Dice+ Levenshtein
  • T13: Levenshtein + Soundex
  • T14: Levenshtein + Metaphone

Chacun de ces algorithmes sera testés pour deux principales catégories: URL tronquée et faute de frappe dans l’URL. Il est considéré que si un algorithme est efficace pour suggérer la bonne URL lors d’une faute de frappe, alors il y a également des chances pour qu’il soit efficace dans d’autres circonstances.

Résultats des tests: URLs tronquées

Les résultats sont présentés ci-dessous via des courbes. L’axe des abscisses représente le nombre de caractères tronqués dans une URL tandis que l’axe des ordonnées représente le pourcentage de succès de l’algorithme.

Test de suggestion d'URLs sur des URLs tronquées

Test de suggestion d’URLs sur des URLs tronquées

Dans ce résultat, l’algorithme le plus efficace est Jaro-Winkler seul.

Résultats des tests: faute de frappe dans les URLs

Pour réaliser ce test, une fonction simulant des fautes de frappes classique à été utilisée. Cela simule aléatoirement une des erreurs suivantes:

  • Ajout d’un caractère (exemple: gooogle au lieu de google)
  • Suppression d’un caractère (exemple: gogle au lieu de google)
  • Échanger deux caractères (exemple: goolge au lieu de google)
  • Modifier un caractère (exemple googke au lieu de google)
Test de suggestion d'URLs sur des URLs avec petite faute de frappe

Test de suggestion d’URLs sur des URLs avec petite faute de frappe

Ces résultats démontrent que c’est l’algorithme T11 qui est en tête suivi de prêt par l’algorithme T10 (Jaro-Winkler).

Cas concret

En vue des résultats, il peut être stipulé que Jaro-Winkler est un bon algorithme pour suggérer une URL en se basant sur ce type d’erreurs communes. Dès lors, il est intéressant de tester cet algorithme sur un vrai site web.

J’ai mis en place cet algorithme utilisant Jaro-Winkler sur la page d’erreur de mon projet infowebmaster.fr. Le sitemap de ce site contient 4320 URLs et cet algorithme analyse la similarité de l’URL morte avec toutes les URLs du sitemap en 0,84 secondes (temps relativement correct). Une fois l’algorithme lancé, c’est l’URL qui obtient le meilleur score de similarité qui est recommandé. Voici des exemples d’URLs morte et d’URL suggéré:

  • /annuai -> /annuaire.php
  • /le-forum -> /forum/
  • /news pyramide inversée -> /110,news-la-pyramide-inversee.html
  • /annuaire indexweb -> /annuaire/209/indexweb-annuaire.html
  • /forum php -> /forum/php/
  • http://www.infowebmaster.fr/erreur 404 -> http://www.infowebmaster.fr/erreur404.php
  • (n’hésitez pas à faire vos propres tests)

Comme il est possible de voir, l’algorithme peut donner de bons résultats. Mais il faut relativiser, les résultats peuvent également être très imprévisibles dans certains cas.

Dans un prochain article je donnerais un outil en PHP qui permet de générer cette suggestion. L’outil lit le sitemap, analyse la similarité avec Jaro-Winkler et suggère une URL. Ce qui est possible de faire, c’est de créer une redirection permanente entre l’URL morte vers la suggestion dans le but que cela soit bénéfique pour le référencement du site web.

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.