introduction
Combien de fois avez-vous cliqué sur un lien HTML sur une page Web uniquement pour obtenir une erreur 404 Introuvable? Les liens rompus existent parce que les pages Web sont parfois déplacées ou supprimées au fil du temps. Le webmaster a pour tâche de rechercher ces liens rompus avant les internautes humains ou les robots des moteurs de recherche. Tout retard dans la résolution du problème entraîne une mauvaise expérience utilisateur et une pénalité éventuelle pour le classement des pages des moteurs de recherche.
Si votre site Web contient plus de quelques pages, la vérification manuelle de chaque lien devient un travail fastidieux, mais de nombreux outils automatisent cette tâche. Vous pouvez utiliser des applications Web, telles que celles fournies par Google Webmaster Tools et le World Wide Web Consortium (W3C), mais elles manquent généralement de fonctionnalités plus avancées. Si vous utilisez WordPress, vous pouvez utiliser un plug-in, mais certaines sociétés d’hébergement Web mutualisées l’interdisent car elles fonctionnent sur le même serveur que le site Web, et la vérification des liens nécessite beaucoup de ressources.
Une autre option consiste à utiliser un programme basé sur Linux sur une machine distincte. Ceux-ci incluent des robots Web généraux qui découvrent également des liens rompus (tels que + wget +
) et des vérificateurs de liens personnalisés (tels que + linkchecker +
et + klinkstatus +
). Ils sont hautement personnalisables et minimisent tout impact négatif sur le temps de réponse de votre site Web cible.
Ce tutoriel explique comment utiliser + wget +
pour rechercher tous les liens rompus sur un site Web afin de pouvoir les corriger.
Conditions préalables
Pour suivre ce tutoriel, vous aurez besoin de:
-
Deux droplets Debian 7, un ordinateur générique pour exécuter
+ wget +
à partir de (* generic-1 ) et un autre qui héberge votre site Web ( webserver-1 *). -
Un utilisateur sudo non root sous * generic-1 * et * webserver-1 *. Cliquez ici pour obtenir des instructions.
-
* le serveur Web-1 * doit avoir la pile LAMP installée. Cliquez ici pour obtenir des instructions.
-
Le serveur Web peut éventuellement avoir son propre nom de domaine enregistré. Si c’est le cas, utilisez votre nom de domaine partout où vous voyez
++
. Cliquez ici pour obtenir des instructions.
Bien que ce tutoriel soit écrit pour Debian 7, les exemples + wget +
devraient également s’appliquer à d’autres distributions Linux modernes. Vous devrez peut-être installer + wget +
sur d’autres distributions où il n’est pas inclus par défaut.
Étape 1 - Création d’un exemple de page Web
Tout d’abord, nous allons ajouter un exemple de page Web avec plusieurs liens manquants.
Connectez-vous à * webserver-1 *. Ouvrez un nouveau fichier nommé + spider demo.html
pour le modifier avec` + nano + `ou votre éditeur de texte préféré.
sudo nano /var/www/spiderdemo.html
Collez le texte suivant dans le fichier. Il s’agit d’une page Web très simple comprenant deux liens rompus, l’un interne (ajoutez l’adresse IP de votre serveur (voir l’illustration ci-dessous)) et l’autre externe.
<html>
<head> <title>Hello World!</title> </head>
<body>
<p>
<a href="http:///badlink1">Internal missing link</a>.
<a href="https://www.digitalocean.com/thisdoesntexist">External missing link</a>.
</p>
</body>
</html>
Enregistrez et fermez le fichier.
Ensuite, remplacez le propriétaire du fichier et le groupe + spiderdemo.html +
par l’utilisateur du serveur Web par défaut, + www-data +
.
sudo chown www-data:www-data /var/www/spiderdemo.html
Enfin, modifiez les autorisations de fichier du nouveau fichier HTML.
sudo chmod 664 /var/www/spiderdemo.html
Vous pouvez maintenant voir la page d’exemple sur + http: /// spiderdemon.html
.
Étape 2 - Lancer wget
+ wget +
est un téléchargeur de sites Web polyvalent qui peut également être utilisé comme robot d’exploration de sites Web. Dans cette étape, nous allons configurer + wget +
pour indiquer si chaque lien pointe vers une page existante ou s’il est cassé sans avoir à télécharger la page.
-
Remarque: * Vérifiez uniquement les liens sur un site Web que vous possédez. La vérification des liens sur un site Web entraîne des coûts informatiques importants. Ces activités peuvent donc être interprétées comme du spam.
Connectez-vous à * generic-1 * et exécutez la commande + wget +
suivante. Les explications de chaque drapeau sont ci-dessous; vous pouvez modifier cette commande pour votre cas d’utilisation.
wget --spider -r -nd -nv -H -l 1 -w 2 -o run1.log http:///spiderdemo.html
Voici les indicateurs de base dont vous aurez besoin:
-
+ - spider
arrête`wget
+ de télécharger la page. -
+ -r +
fait+ wget +
suivre récursivement chaque lien de la page. -
+ -nd +
, abréviation de+ - no-directory +
, empêche+ wget +
de créer une hiérarchie de répertoires sur votre serveur (même lorsqu’il est configuré pour spider uniquement). -
+ -nv +
, abréviation de+ - no-verbose +
, arrête+ wget +
de générer des informations supplémentaires inutiles pour identifier les liens rompus.
Voici des paramètres facultatifs que vous pouvez utiliser pour personnaliser votre recherche:
-
+ -H +
, abréviation de+ - span-hosts +
, rend+ wget +
l’exploration de sous-domaines et de domaines autres que le principal (c.-à-d. sites externes). -
+ -l 1 +
est l’abréviation de+ - niveau +
. Par défaut,+ wget +
explore jusqu’à cinq niveaux à partir de l’URL initiale, mais nous le définissons ici à un. Vous devrez peut-être jouer avec ce paramètre en fonction de l’organisation de votre site Web. -
+ -w 2 +
, abréviation de+ - wait +
, ordonne+ wget +
d’attendre 2 secondes entre les requêtes pour éviter de bombarder le serveur, minimisant ainsi l’impact sur les performances. -
+ -o run1.log +
enregistre la sortie dewget +
dans un fichier nommé+ run1.log +
au lieu de l’afficher dans votre terminal.
Après avoir exécuté la commande + wget +
ci-dessus, extrayez les liens rompus du fichier de sortie à l’aide de la commande suivante.
grep -B1 'broken link!' run1.log
Le paramètre + -B1 +
spécifie que, pour chaque ligne correspondante, + wget +
affiche une ligne supplémentaire du contexte principal avant la ligne correspondante. Cette ligne précédente contient l’URL du lien rompu. Vous trouverez ci-dessous un exemple de sortie de la commande + grep +
ci-dessus.
http:///badlink1:
Remote file does not exist -- broken link!!!
https://www.digitalocean.com/thisdoesntexist:
Remote file does not exist -- broken link!!!
Étape 3 - Recherche des URL de référence
L’étape 2 indique les liens rompus mais n’identifie pas les pages Web de référence, c’est-à-dire les pages de votre site qui contiennent ces liens. Dans cette étape, nous allons trouver les pages Web de référence.
Un moyen pratique d’identifier l’URL du référent consiste à consulter le journal d’accès du serveur Web. Connectez-vous à * webserver-1 * et recherchez le lien rompu dans les journaux Apache.
sudo grep Wget /var/log/apache2/access.log | grep "HEAD "
Le premier + grep +
de la commande ci-dessus trouve toutes les demandes d’accès de + wget +
au serveur Web. Chaque demande d’accès inclut la chaîne User Agent, qui identifie l’agent logiciel responsable de la génération de la demande Web. L’identifiant * de l’agent utilisateur pour + wget +
est + Wget / 1.13.4 (linux-gnu) +
.
Le second + grep +
recherche l’URL partielle du lien rompu (+ / badlink1 +
). L’URL partielle utilisée est la partie de l’URL qui suit le domaine.
Voici un exemple de sortie de la chaîne de commande + grep +
:
111.111.111.111 - - [10/Apr/2015:17:26:12 -0800] "HEAD /badlink1 HTTP/1.1" 404 417 "http:///spiderdemo.html" "Wget/1.13.4 (linux-gnu)"
L’URL de référence est l’avant dernier élément de la ligne: + http: /// spiderdemon.html
.
Conclusion
Ce tutoriel explique comment utiliser l’outil + wget +
pour rechercher les liens rompus sur un site Web et comment rechercher les pages de référence contenant ces liens. Vous pouvez maintenant apporter des corrections en mettant à jour ou en supprimant les liens brisés.