LinkCheck : vérificateur de liens

Ce plugin permet de chercher et tester l’ensemble des liens présents dans les objets. Vous pourrez donc en quelques clics connaître les liens brisés ou défectueux qui se sont immiscés dans le contenu de votre site SPIP. La vérification s’effectue en tâche de fond pour avertir le webmestre dès qu’un liens montre des signes de faiblesse.

Fonctionnement

Le plugin LinkCheck parcoure les objets SPIP pour établir la liste des liens qu’ils contiennent. Les liens trouvés sont enregistrés dans une table de la base de données (spip_linkchecks) et sont reliés à l’objet ou aux objets qui le contiennent par le biais de la table spip_linkchecks_liens.

Une fois les liens listés, le plugin les vérifie un par un en interrogeant l’entête HTTP renvoyé par le serveur hébergeant la page.

La vérification répartis les liens en 4 statuts :

  • Les morts mort :-( : La page ou le document n’existe plus, c’est la fameuse erreur 404, le lien est à retirer ou à corriger de toute urgence.
  • Les liens malades : La fonction de vérification n’arrive pas à obtenir les informations permettant de savoir si le lien est valide, le serveur hébergeant la page est saturé. À vérifier manuellement.
  • Les liens déplacés : Ce sont des liens qui mène bien à la page souhaitée mais qui passe par une redirection . On va retrouver dans cette catégorie les URL raccourcis, les liens , Dans certains cas, il est préférable de remplacer ces liens par leur redirection.
  • Les liens valides : c’est ceux qu’on préfère, ils fonctionnent, rien à faire.

Le plugin linkcheck vérifie des liens collectés de deux façon :

  • Vérification automatique en tâche de fond : Après chaque modifications d’un objet, le plugin enregistre les liens présent dans cet objet, ils seront vérifiés par une tâche de fonds. Si un problème est constaté, le plugin informera le webmestre de la présence d’un lien brisé. Il pourra de cette façon le corriger au plus vite.
  • Vérification intégrale : Il est possible à partir de la page principale du plugin de lancer une vérification de tous les liens, Cette opération peut prendre plus ou moins de temps suivant le nombre de liens présents sur votre site.

Mode d’emploi

Une fois le plugin installé, un lien “Vérificateur de liens” est ajouté dans le menu “Maintenance”. En suivant ce lien, vous arrivez sur cette page :

Si c’est votre première utilisation, il sera offert la possibilité de lancer la recherche des liens. Vous n’avez qu’à cliquer sur le bouton “Commencer la recherche”

Une fois la recherche terminé, la page est réactualisée, vous pouvez consulter l’ensemble des liens présents sur votre site. Il ne sont pas encore vérifier.

Vous pouvez laisser les tâches de fonds faire, elles se chargeront de vérifier de l’ensemble des liens au goutte à goutte. Si vous êtes pressés, vous pouvez lancer une vérification complète en cliquant sur le bouton “Commencer la vérification” ou “poursuivre la vérification”. Il ne vous reste plus dans ce cas qu’à contempler de défilement de la barre de progression, elle vous annonce l’état de vos liens.

Paramétrages

Vous pouvez régler à partir de l’écran de configuration du plugin, la façon dont le plugin vous notifie les anomalies.

  • Vous pouvez activer ou désactiver la barre d’alerte.
  • Vous pouvez activer ou désactiver la notification par email

Export vers un tableur

Pour une gestion externe des liens morts ou déplacés, on peut souhaiter exporter les résultats vers un fichier tableur. Pour cela on peut passer par phpmyadmin. À cette fin, un lien situé en bas de la liste permet d’exporter la sélection : tous les liens et leur diagnostic, ou seulement les morts, ou les déplacés, etc.

Le développement de ce plugin a bénéficié du soutien du BRGM, qu’il en soit vivement remercié !

Noms alternatifs possibles :

  • checklinks
  • checklink
  • vérif liens
  • liens vérif

Discussion

41 discussions

  • 8

    Bonjour,
    Suite à la mise à jour du plugin version 3.0.4 de juin 2025 pour un site Spip en 4.4.4 j’ai un message d’erreur en lançant la recherche de lien (après vidage des tables puis en désinstallant et réinstallant complètement le plugin) :
    Fatal error: Uncaught Error: Call to undefined function echappe_html()…

    Merci de vos conseils

    • Complément d’information :
      plugin 3.0.4 désinstallé, la version 2.1.0 stable installée à la place fonctionne parfaitement.

    • Bonjour,

      Est ce que l’on peut avoir un peu plus d’information sur l’erreur ?

      merci

    • Je dois réinstaller la 3.0.4. et je vous donne le message entier.

    • Suppression de LinkCheck 2.0.1 et réinstalation de la v3.0.4 sur un Spip 4.4.4 local sous Mamp dernière version 7.2 (2737), Php 8.3.14, serveur Mysql 8.0.40.
      Autres plugins actifs : Belles puces 2.0.0, Bootstrap 4 4.7.1, Corbeille 4.1.0, Court-circuit 4.2.0, Facteur 5.2.1, Saisies pour formulaires 5.13.1, SCSS PHP 3.1.0, SPIP Bonux 4.2.0, SPIP reset 3.1.0, SpiPDF 2.2.0.
      Lors de la recherche des liens :
      Fatal error: Uncaught Error: Call to undefined function echappe_html() in /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php:307 Stack trace: #0 /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php(268): linkcheck_nettoyer_texte(’Mamp100’) #1 /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php(211): inc_linkcheck_recenser_liens_champ_type_texte_dist(’Mamp100’) #2 /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php(153): linkcheck_recenser_liens(’article’, Array) #3 /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php(113): linkcheck_objet_recenser_liens(’article’, 2, Array) #4 /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/action/linkcheck_parcours.php(14): linkcheck_parcourir(NULL, 1753263171) #5 /Applications/MAMP/htdocs/05-Spip/CMS/ecrire/public/aiguiller.php(80): action_linkcheck_parcours_dist() #6 /Applications/MAMP/htdocs/05-Spip/CMS/ecrire/index.php(68): traiter_appels_actions() #7 main thrown in /Applications/MAMP/htdocs/05-Spip/CMS/plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php on line 307

    • Merci

      Est ce que ligne 306 vous pouvez rajouter

      include_spip('inc/texte_mini');

      et me dire si cela corrige le bogue ?

    • Message disparu après avoir rajouté
      include_spip(’inc/texte_mini’); en ligne 306
      dans plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php

      J’ai vidé les tables avec Réinitialiser
      J’ai effectué sans problème la recherche de liens et fait leurs vérifications.
      Bravo et merci
      Wouarf

    • [Résolu]
      Message disparu après avoir rajouté
      include_spip(’inc/texte_mini’); en ligne 306
      dans plugins/auto/linkcheck/v3.0.4/inc/linkcheck_parser.php
      J’ai vidé les tables avec Réinitialiser,
      Effectué une recherche de liens sans problème et fait la vérification de liens.
      Bravo et merci
      Wouarf

    • Bonjour,

      La version 3.0.5 corrige le problème.

      Cordialement

    Reply to this message

  • 1

    Bonjour,

    Mon site tourne sur SPIP 4.3.6, avec une cinquantaine de plugins activés et tous à jour.

    Je suis passé de la version 2.1.0 de LinkCheck à la version 3.0.2, car dans l’ancienne version, le test de vérification des liens (sur la page de gestion du site https://www.regionreunion.com/, par exemple) m’indiquait des liens morts, alors qu’ils étaient valides.

    Après le changement de version, la boite de dialogue pour tester les liens n’apparaît plus sur la page de gestion du site. Sur la page des listes de liens, il est néanmoins toujours possible de tester les liens, cependant, je me retrouve avec un état “restreint” sur le site testé en exemple, alors qu’il n’y a visiblement pas d’erreur 401 ou 403 et que les liens (du site et de syndication rss) sont bien valides.

    Je ne sais pas comment interpréter ce résultat. Il n’est pas gênant en soi, mais je suppose que ce ne doit pas être le fonctionnement normal attendu du plugin et de cet état particulier. Je vous fais donc un retour d’expérience, car j’ai noté que la version 3.0.2 était en test.

    • [EDIT] Par ailleurs, après avoir réinitialisé la recherche et la vérification des liens, je me retrouve avec environ 300 liens détectés, là où, auparavant j’en avais plus de 2500.

    Reply to this message

  • Bonjour,

    Je rencontre un bug à l’activation. J’ai bien les dépendances en version demandée mais impossible à activer.

    SPIP 3.2.16
    PHP 5.6.40

    Reply to this message

  • Hello

    Plugin indispensable pour éviter d’avoir des liens morts dans ses articles.

    Cependant, ce qui serait cool, ce serai d’avoir la possibilité de ne pas prendre en compte

    • les liens entre balises “code”
    • les liens des forums car au bout de quelques années d’existence, le nombre de liens morts dans ces forums gonfle fortement et ils sont plus compliqués à enlever ou corriger (c’est du vécu).

    Reply to this message

  • 1

    Bonjour,
    Après une maj en 4.15, j’ai un problème avec le plugin ’linkcheck ’qui m’affiche un message d’erreur dans l’espace privé :

    Erreur SQL 1146
    Table ‹ **_linkchecks › doesn’t exist
    SELECT * FROM spip_linkchecks LIMIT 1
    ****/docs/ecrire/genie/maintenance.php** verifier_crash_tables(){ sql_select(); } 

    C’est plus embétant que cela paraît car je ne peux sauvegarder la base sql (‹ table linkcheck manquante ›) ni utiliser ‹ adminer ›

    J’ai désinstallé proprement le plugin linkcheck et supprimé la table correspondante dans mysql (plusieurs fois) mais le message d’erreur persiste.
    Merci pour votre aide !

    Reply to this message

  • 1

    Salut,
    j’ai quelques faux positifs parfois (des liens morts ou malades qui ne le sont pas).
    Est-il possible de demander de ne pas traiter certains liens ?
    Bonne journée !
    Ben

    • Vous pouvez ignorer ma demande, je vois que la question a déjà été posée ;)
      (Comme un imbécile, je n’avais pas regardé...)
      Si je résume :
      Non, il n’y a pas la possibilité ou alors il faudrait la coder s’il y a des motivé-es.

    Reply to this message

  • 1

    La version 2.0.3 ne fonctionne pas sous Spip 4.1.
    En effet, la fonction recuperer_entetes() n’est plus supportée, la doc indique qu’elle doit être remplacée par recuperer_entetes_complets().

    Il faut donc actualiser le fichier “inc/linkcheck_fcts.php” en ligne 331, en remplaçant :

    $headers = recuperer_entetes($f, '');

    par

    $headers = recuperer_entetes_complets($f, '');

    Reply to this message

  • 4

    Ce plugin fonctionne sur un site SPIP 4 (en changeant la borne) mais avec quelques altérations :
    il n’est plus possible de cliquer sur l’objet qui contient le lien (cf capture).
    Et visuellement (anecdotiquement) les liens de pagination en bas sont en liste : ul.pagination-items > li

    Merci
    dd

    • En complément voici le message d’erreur sur la page

      ecrire/?exec=linkchecks&message=check_ok

      1         Filtre lien_objet non défini        ../plugins/auto/linkcheck/v1.5.3/prive/objets/liste/linkcheck_detail.html        _liens        17

      Merci

    • Bonjour,

      En effet, je constate aussi ce comportement.
      Une piste pour le corriger ?

    • La version 2.0.0 du plugin, marqué compatible spip 4.0.0, corrige ce filtre + le souci de pagination.

    • Super, merci.
      Je teste dès que possible

    Reply to this message

  • Bonjour, je fais remonter une erreur ici...
    Problème avec le bouton “Tout enlever” sur la gestion des documents dans un objet
    Lorsque j’essaie d’utiliser le bouton “Tout enlever” dans, j’ai un message d’erreur...

    Fatal error: Uncaught Error: Call to undefined function objet_info() in .../plugins/auto/linkcheck/linkcheck_pipelines.php:59 Stack trace: #0.../ecrire/inc/utils.php(199): linkcheck_post_edition(Array) #1.../tmp/cache/charger_pipelines.php(1433): minipipe(’linkcheck_post_...’, Array) #2 .../ecrire/inc/utils.php(265): execute_pipeline_post_edition(Array) #3 .../plugins-dist/medias/action/editer_document.php(263): pipeline(’post_edition’, Array) #4 .../plugins-dist/medias/action/dissocier_document.php(102): document_instituer(108959) #5 .../plugins-dist/medias/action/dissocier_document.php(178): supprimer_lien_document(108959, ’evenement’, 7673, false, false) #6 .../medias/action/dissocier_document.php(65): dissocier_document(’I/document’, ’evenement’, 7673, false, false) # in .../plugins/auto/linkcheck/linkcheck_pipelines.php on line 59

    Spip 3.2 [24473]

    Reply to this message

  • 2
    olivier

    Merci pour ce plugin indispensable.

    -  serait-il possible à l’avenir de mettre un petit bouton à coté d’un “lien déplacé” pour “accepter la redirection” et modifier directement la base spip?
    -  serait-il possible de mettre un bouton pour “ignorer définitivement” les faux-positifs pour les liens morts?

    exemples de faux-positifs chez moi: https://borisvs.com ; https://www.sheermedia.co.za/cv ; https://www.xdeep.eu

    • Si tu te sens de coder ça, n’hésite pas !

    • olivier

      je sais programmer des boucles, mais pas ecrire du php ou des instructions sql. Je risque de passer des jours en debug pour des histoires de virgules, ou des exceptions.
      En regardant le code du plugin, il faut rajouter une fonction de recherche/remplacer de texte (url) dans des champs textuels. On connait déjà l’url à trouver et celle à remplacer. (peut-etre des histoires d’url_rewriting à vérifier pour les liens internes?).
      Pour “ignorer” une url (faux-positifs), créer un nouveau statut “ignorés” et une tache cron associée à fréquence tres petite .
      Ergonomiquement, je rajouterai 2 liens dans la colonne Etat, sous “publier ce lien”: “remplacer ce lien” et “ignorer”.
      Tels quels, les liens ignorés peuvent être retrouvés en réinitialisant,

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom