web-dev-qa-db-fra.com

Comment trouver des liens brisés sur un site Web

Quelles techniques ou quels outils sont recommandés pour trouver des liens brisés sur un site Web?

J'ai accès aux fichiers journaux, donc je pourrais peut-être analyser ceux-ci à la recherche d'erreurs 404, mais je voudrais quelque chose d'automatisé qui suivra (ou tentera de suivre) tous les liens sur un site.

43
Ian Nelson

Pour Chrome Extension il y a hexomètre

Voir LinkChecker pour Firefox.

Pour Mac OS, il existe un outil Integrity qui peut vérifier les URL pour les liens rompus.

Pour Windows il y a Link Sleuth de Xen .

36
jrudolph

Je viens de trouver un script wget qui fait ce que vous demandez.

wget --spider  -o wget.log  -e robots=off --wait 1 -r -p http://www.example.com

Le crédit revient à cette page .

25
wjbrown

J'aime le W3C Link Checker .

10
Paul Reiners

Voir linkchecker outil:

LinkChecker est un validateur de site Web sous licence GPL gratuit. LinkChecker vérifie les liens dans les documents Web ou les sites Web complets.

7
Roman Romanchuck

Soit utiliser un outil qui analyse vos fichiers journaux et vous donne un rapport de "liens rompus" (par exemple Analog ou Google Outils pour les webmasters ), ou exécutez un outil qui araignées votre site Web et signale les liens rompus (par exemple W3C Link Checker ).

2
Peter Hilton

Dans une application .NET, vous pouvez définir IIS pour transmettre toutes les demandes à ASP.NET, puis dans votre gestionnaire d'erreurs global, vous pouvez intercepter et consigner les erreurs 404. C'est quelque chose que vous feriez en plus à l'araignée de votre site pour vérifier les liens internes manquants. Cela peut aider à trouver des liens cassés à partir d'autres sites et vous pouvez ensuite les corriger avec des redirections 301 vers la bonne page.

Pour aider à tester votre site en interne, il existe également la boîte à outils Microsoft SEO.

Bien sûr, la meilleure technique consiste à éviter le problème lors de la compilation! Dans ASP.NET, vous pouvez vous en approcher en exigeant que tous les liens soient générés à partir de méthodes statiques sur chaque page afin qu'il n'y ait qu'un seul emplacement où une URL donnée est générée. par exemple. http://www.codeproject.com/KB/aspnet/StronglyTypedPages.aspx

Si vous voulez un robot C # complet, il y en a un ici: - http://blog.abodit.com/2010/03/a-simple-web-crawler-in-c-using-htmlagilitypack/

1
Ian Mercer

Notre produit commercial DeepTrawl fait cela et peut être utilisé sur Windows/Mac.

Divulgation: je suis le développeur principal de DeepTrawl.

1
Jonathan

Votre meilleur pari est de rassembler votre propre araignée dans le langage de script de votre choix, cela pourrait être fait de manière récursive sur le modèle de:

// Pseudo-code to recursively check for broken links
// logging all errors centrally
function check_links($page)
{
    $html = fetch_page($page);
    if(!$html)
    {
        // Log page to failures log
        ...
    }
    else
    {
        // Find all html, img, etc links on page
        $links = find_links_on_page($html);
        foreach($links as $link)
        {
            check_links($link);
        }
    }
}

Une fois que votre site a obtenu un certain niveau d'attention de la part de Google, leurs outils pour les webmasters sont inestimables pour montrer les liens cassés que les utilisateurs peuvent rencontrer, mais cela est assez réactionnaire - les liens morts peuvent exister pendant plusieurs semaines avant que google les indexe et enregistre le 404 dans votre panneau de webmaster.

Écrire votre propre script comme ci-dessus vous montrera tous les liens cassés possibles, sans avoir à attendre que Google (outil pour les webmasters) ou vos utilisateurs (404 dans les journaux d'accès) tombent dessus.

0
ConroyP

LinkTiger semble être un service très soigné (bien que non gratuit) pour ce faire. Je ne l'utilise pas, je voulais juste l'ajouter car il n'était pas encore mentionné.

0
akauppi