Tester les URL des sites référencés

Les adresses de sites web inscrits dans votre annuaire SPIP sont elles valides.

Il y a quelques temps, Mathieu Onfray webmaster du site Japanim.net, a réalisé pour ses propres besoins une page php à rajouter à votre partie privée pour vérifier facilement si les adresses de sites web inscrits à votre annuaire spip sont valides ou non.

L’usage en est fortement recommandé pour éviter les fameux 404 not found qui gâchent la navigation internet.

Le fichier n’a subit qu’un changement de nom de fonction pour devenir compatible avec spip 1.8 : ligne 203 spip_fetch_row() est devenu spip_fetch_array(). [1]

Appelez le test_sites.php3 et placez le dans votre répertoire /ecrire.
Ouvrez le ensuite avec votre navigateur. C’est tout.

Notes

[1Donc pour résumer : vous utilisez SPIP<1.8>  spip_fetch_row() » , vous utilisez SPIP 1.8 ou plus : c’est « spip_fetch_array() »

Mathieu Onfray m’a autorisé à diffuser sous licence GPL son excellent script permettant de tester si les sites web inscrits dans votre annuaire de site spip sont toujours valides.

Dernière modification de cette page le 10 février 2007

Discussion

6 discussions

  • Ghislain

    Bonjour,
    Le fichier test_sites.php3 semble ne plus être valable depuis le passage à spip 1.9. Existe-t-il une version récente de cette contrib ? Est-il compliqué d’adapter le fichier pour spip 1.9.2 ?
    Je cherche de mon côté
    Merci d’avance à qui aurait une solution

    Répondre à ce message

  • Simple, rapide, facile d’utilisation : bravo !

    Olivier

    Répondre à ce message

  • Intéressant mais largement tributaire du paramétrage du DNS : dans le cadre de mon intranet, toute adresse hors intranet renvoie un code « Impossible de se connecter ».

    La contrib m’a quand même permis de trouver un lien mort. Merci.

    Répondre à ce message

  • Gilles Corlobé

    Le script fonctionne très bien : merci à son auteur.

    Je me permets de proposer une modification destinée à vérifier l’état des liens de redirection des pages. Les pages vers lesquels les articles de SPIP sont redirigés ne sont plus toujours disponibles (c’est exactement le même problème).

    Pour créer ce nouveau script (test_redirection.php3), il suffit de dupliquer test_sites.php3 et de remplacer à la fin du script entre :

    //nbre de sites référencés

    et

    CreerLiens(« test_redirection.php3 ?debut= », $nba, $nbr_entrees) ;

    par ceci :

    $res2 = spip_query(« SELECT COUNT(chapo) FROM spip_articles ») ;

    $resultat2 = spip_fetch_array($res2) ;

    $nbr_entrees = $resultat2[0] ;

    if (empty($debut)) $debut = 0 ;

    //construction de la requête

    $req = « SELECT * FROM spip_articles » ;

    //utilisé dans une v2 du script...

    //if (! empty($id_rubrique)) $req .= « WHERE id_rubrique=$id_rubrique » ;

    $req .= « ORDER BY id_article LIMIT $debut, $nba » ;

    $res = spip_query($req) ;

    $ligne = 0 ;

    while($resultat = spip_fetch_array($res))

    $pos = strpos($resultat[« chapo »], « http:// ») ;

    if ($pos==1)

    echo « - p>

    echo "> » . $resultat[« titre »] . «  » ;

    $tab_return = check_connect($resultat[« chapo »]) ;

    echo «  : » . $tab_return[« message »] ;

    echo « 
     » ;

    $ligne++ ;

    if ($ligne==0)

    echo « Aucune page redirigée...
     » ;

    J’espère que pour une modification faite en quelques minutes ça fonctionnera aussi bien chez vous que chez moi !

    Répondre à ce message

  • 4

    Je viens de tester le tout ! J’ai eu plusieurs messages « La page a été déplacée momentanément » ou « Page inexistante ! ». Mais, après vérifications, tous ces liens sont pourtant bien valides et fonctionnels. Une idée pourquoi le test n’est pas fidèle ? Je suis sur SPIP 1-8.

    • Comme tu peux le lire dans le code, ce script analyse la validité des liens par des requêtes hhtp et analyse en retour ce que lui renvoie le serveur.

      Soit :

      // 2** la page a été trouvée
                              case 200 :                
                                                      $message = "OK";
                                                      $color = "#33cc00";
                                                      $connect = 2;
                                                      break;
                              case 204 :        
                                                      $message = "Cette page ne contient rien !";
                                                      $color = "#ff9966";
                                                      break;
                              case 206 :        
                                                      $message = "Contenu partiel de la page !";
                                                      $color = "#ff9966";
                                                      break;
                              // 3** il y a une redirection
                              case 301 :        
                                                      $message = "La page a été déplacée définitivement"; 
                                                      $message .= seek_redirect_location($en_tete);
                                                      $color = "#ff9966";
                                                      $connect = 1;
                                                      break;
                              case 302 :        
                                                      $message = "La page a été déplacée momentanément"; 
                                                      $message .= seek_redirect_location($en_tete);
                                                      $color = "#ff9966";
                                                      $connect = 1;
                                                      break;
                              // 4** erreur du coté du client
                              case 400 :        
                                                      $message = "Erreur dans la requête HTTP !";
                                                      $color = "#ff0000";
                                                      break;
                              case 401 :        
                                                      $message = "Authentification requise !";
                                                      $color = "#ff0000";
                                                      break;
                              case 402 :        
                                                      $message = "L'accès à la page est payant !";
                                                      $color = "#ff0000";
                                                      break;
                              case 403 :        
                                                      $message = "Accès à la page refusé !";
                                                      $color = "#ff0000";
                                                      break;
                              case 404 :        
                                                      $message = "Page inexistante !";
                                                      $color = "#ff0000";
                                                      break;
                              // 5** erreur du coté du serveur
                              case 500 :        
                                                      $message = "Erreur interne au serveur !";
                                                      $color = "#ff0000";
                                                      $connect = 1;
                                                      break;
                              case 502 :        
                                                      $message = "Erreur à cause de la passerelle du serveur !";
                                                      $color = "#ff0000";
                                                      break;
                              // cas restant
                              default :        
                                                      $message = "Erreur non traitée dont le numéro est : $no_code!";
                                                      $color = "#000000";
                                                      break;

      Donc, selon le paramétrage du serveur tu peux avoir des messages invalides :-)

    • Par exemple : j’ai l’adresse http://www.libroscope.org/Spip-au-scope de référencé. Le site marche très bien mais j’ai le message « Page inexistante ! ». Et c’est comme ça pour tous les messages d’erreurs.

    • S’il y en a plusieurs je pense pour une erreur de réglage du DNS de ton serveur d’hébergement.

      Pour info le même script me donne une url valide pour http://www.libroscope.org/Spip-au-scope sur http://www.allergique.org/

      Désolé je ne vois rien d’autre...

    • Même en local (donc pas sur mon hébergeur) cette adresse me donne, comme plusieurs autres, le même message erroné.

      Je vais renoncer.

      Merci !

    Répondre à ce message

  • catherine

    Nickel


    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom