Urls propres, 3 chiffres et google

Adapter les Urls propres de SPIP pour aider les robots à les lire

Aider nos amis les robots

Il paraît que google-news, c’est trop de la balle et que pour bien faire, ou bien se faire référencer, il est absolument indispensable que l’url d’une page contiennent un identifiant numérique d’au moins 3 (oui, trois) caractères.

Avec SPIP, nous savons rendre intelligible nos urls pour les humains, mais, hélas pour eux, au détriment des robots, qui sont perdus sans leurs &# !?$$ numéros.

En femmes et hommes libres, nous pouvons choisir et faire l’effort condescendant d’aider nos amis les robots.

Adapter les Urls propres

Nous avons besoins pour commencer d’activer les urls propres

Certains d’entre-nous peuvent l’avoir remarqué, si deux objets éditoriaux de même type, deux articles par exemple, ont le même titre, les urls propres ajouteront automatiquement au second son identifiant numérique après une virgule discrète et élégante.

Ceci fait, nous pouvons, nous les humains, rendre ce choix arbitraire parfaitement systématique et mieux, combler le vide que laissent les identifiants inférieurs à 100, qui ne sont pas constitués de 3 chiffres...

Pour cela, profitons des capacités de « surcharge » de SPIP :

Dans le dossier squelettes/, créez un sous-répertoire urls/. Dans celui-ci, collez le fichier propres.php que vous aurez copier depuis son répertoire d’origine, à savoir ecrire/urls/

Opérez les modifications ci-dessous :

Vers la ligne 117,

Avant :

if ($n > 0) {
	$url = $url.','.$id_objet;
}

Après :

if ($type == 'article') {
	$url = $url.','.sprintf('%03d', $id_objet);
}
elseif ($n > 0) {
	$url = $url.','.$id_objet;
}

Les identifiants apparaîtront systématiquement pour tous les articles, après la sympathique virgule et sur 3 chiffres minimum, les nombres inférieurs à 100 étant complétés par des 0 à gauche (Exemple : 35 devient 035).

Mettre à jour des urls propres existantes

Si vous aviez déjà activé les urls propres par le passé, vous devrez mettre à jour les urls propres qui ont déjà été calculées. Comme il n’existe pas, à ce jour, d’interface graphique pour ce faire, et ce n’est pas la peine de râler sur ce fait dans le forum de cette page, d’avance merci ;), vous aurez à le faire à la main, avec la requête SQL suivante :

UPDATE spip_articles SET url_propre='';

Cet article limite volontairement l’application d’un nombre aux urls des articles. Pour faire plus, le forum est ouverts à vos astuces ! :)

Discussion

19 discussions

  • 1
    MasterJuh

    Bonjour,

    Je cherchais à obtenir des urls avec le nom de l’article, suivi d’un « _ » et du numéro d’article sur cinq chiffre. Cinq, car j’ai plusieurs milliers d’articles, et que Google dit que les nombres ressemblant à des dates peuvent ne pas être pris en compte comme url valide.

    Ce que j’ai fait et qui semble fonctionner, c’est ajouter une ligne dans la fonction urls_propres_creer_chaine_url à la ligne 91.

    Au lieu de

    $x['data'] = $url;

    J’ai mis

    $url = $url.'_'.sprintf('%05d', $objet['id_objet']);
    $x['data'] = $url;

    ça semble fonctionner.

    Que ceux qui voient un problème potentiel se profiler avec cette modification partagent leur savoir.
    Que ceux qui cherchaient comme moi et qui pourraient profiter de cette solution en profitent.

    Ciao

    • MasterJuh

      Pour la ligne 91, je parle du fichier propres.php, d’un SPIP 2.1.0

    Répondre à ce message

  • 3

    Bonjour,

    Il faut ajouter quoi et où dans propre.php sachant que j’utilise spip 2.0.6 ? J’ai essayé une cinquantaine de possibilités avec le code proposé dans l’article mais ça ne marche pas.

    Merci.

    • A. Djabri

      Azul,

      Pour spip 2, j’ai utilisé un machin comme ça :

      Dans propres.php

      Avant :

              $x['data'] = $url;
      
      	return $x;

      Ajouter :

      // Ajout neméro pour google news - DÉBUT
      if ($objet['type'] == 'article' || $objet['type'] == 'breve'){
      
         if ($objet['id_objet'] >= 10000){$url = $url.$objet['id_objet'];}
      
         if ($objet['id_objet'] < 10000 && $objet['id_objet'] >= 1000){$url = $url.',0'.$objet['id_objet'];}
      
         if ($objet['id_objet'] < 1000 && $objet['id_objet'] >= 100 ){$url = $url.',00'.$objet['id_objet'];}
      
         if ($objet['id_objet'] < 100 && $objet['id_objet'] >= 10 ){$url = $url.',000'.$objet['id_objet'];}
      
         if ($objet['id_objet'] < 10 ){$url = $url.',0000'.$objet['id_objet'];}
      }
      // Ajout neméro pour google news - FIN

      Ça donne des urls avec un nombre d’au moins 4 chiffres (articles et brèves) en ajoutant à l’id un, deux, ou trois 0.

      Exemples :

      Article : http://aokas.net/Autant-en-emporte-le-vent-de-sable,00090.html ; Brève : http://aokas.net/+Alerte-a-Melbou-Les-habitants,00015+.html.

    • Les gars, Oubliez la modif de code et installez le Couteau Suisse (télécharger)

      Il fera le boulot tout seul dès que vous aurez configuré l’outil adéquate, sinon vous risquez de vous arrachez les cheveux à la prochaine mise à jour de SPIP.

      Bonne journée.

    • Mef quand même avec le couteau suisse, parfois lors d’une mise à jour vous pourriez avoir des surprises.

      Une fois j’ai perdu tout le travail de réécriture suite à une version foireuse, toutes les urls étaient à nouveau à 35 caractères.

    Répondre à ce message

  • Tropicaloo

    Si, si très clair.

    Merci Patrice et Loiseau2nuit pour vos précisions. C’est très interessant.

    Répondre à ce message

  • 7

    Quel adaptation faire avec un basculement sous spip 2.0.2 ?
    Je ne trouve pas la ligne 117 correspondante.

    • HELP je suis bloqué à ce stade, quel changement avec l’urlwriter et la version 2.0.2 ??????? !!!!!!!

    • Il faut utiliser le pipeline creer_chaine_url. Le Couteau Suisse propose déjà cette fonctionnalité pour SPIP 2.0.X.

      Le code de ce pipeline pourrait être du genre : $flux['data'].=','.$flux['objet']['id_objet'];

    • Hello Patrice, je viens de tomber sur la fonctionalité du CS en effet.

      En revanche, j’ai pu constater qu’elle ajoutais l’ID sur TOUTES les branches de l’URL alors que techniquement (James me contredira si je me trompe) seul le dernier objet de l’url suffirait

      exemple :
      http://www.tagadatsointsoin.fr/plop,6/pwet,39/mon-article,94 alors que http://www.tagadatsointsoin.fr/plop/pwet/mon-article,94 suffirait amplement si je suis bien le raisonnement de cette contrib ?

      Autre chose, les id ne font pas 3 chiffres ? C’est un choix ? une nouvelle préco Google ?

      Merci pour tes retours.

      Etienne.

      1. L’id du CS n’avais pas été prévu pour faire 3 chiffres absolument, mais la piste n’est pas à négliger en effet, face à ce géant omnivore et exigeant qu’est google. Voici la source que James a omis de citer : http://www.google.com/support/news_....
      2. Il est également judicieux, au sujet des URLs arbo, d’éviter l’id des rubriques. Le pb est que SPIP stocke l’URL de chaque objet sans savoir quel système sera utilisé par le webmaster. Donc, dans le cas des arbos, si tu cliques sur une rubrique, son url sera http://www.tagadatsointsoin.fr/plop,6 et si tu cliques sur un article alors ce sera http://www.tagadatsointsoin.fr/plop,6/mon-article,94 : cqfd. Bon, si on exclut les rubriques, alors nos deux liens deviennent : http://www.tagadatsointsoin.fr/plop et http://www.tagadatsointsoin.fr/plop/mon-article,94.

      Je viens donc d’ajouter ces 2 réglages dans le Couteau Suisse, en jouant sur $flux[’objet’][’id_objet’] et $flux[’objet’][’type’].

      J’aimerais préciser que cette discussion n’est pas appropriée ici, et qu’il vaudrait mieux, si suite il y a, la poursuivre ici.

    • Hello :)

      Il est également judicieux, au sujet des URLs arbo, d’éviter l’id des rubriques.

      Parce que ???

      Donc, dans le cas des arbos, si tu cliques sur une rubrique, son url sera http://www.tagadatsointsoin.fr/plop,6 et si tu cliques sur un article alors ce sera http://www.tagadatsointsoin.fr/plop,6/mon-article,94 : cqfd.

      Sur le principe http://www.tagadatsointsoin.fr/plop006 ne me dérange pas tant que plop est la dernière branche affichée de l’arbo.

      En revanche, pour le cas d’un article, c’est le nom de l’article qui devient la dernière branche.

      L’idée ici serait de ne numéroter QUE la dernière branche :
      http://www.tagadatsointsoin.fr/plop006
      http://www.tagadatsointsoin.fr/plop/pwet123
      http://www.tagadatsointsoin.fr/plop/pwet/article456.html

      Sinon, merci pour le lien que tu as fournis, je trouve juste dommage qu’ils ne se soient pas épanché un peu plus sur le principe des 3 chiffres...

      Bon après j’imagine que ce n’est pas tout le monde qui a besoin de pointer son site dans Google News mais j’aime bien savoir avec précision pour quelle raison je m’arrache des cheveux lors de mes intégrations de sites :-P

    • Il est également judicieux, au sujet des URLs arbo, d’éviter l’id des rubriques.

      Parce que ???

      Parce qu’en gros, à chaque objet correspond une (voire plusieurs dans le cas de SPIP 2.0) URLs, et qu’on ne peut pas utiliser d’un côté http://www.tagadatsointsoin.fr/plop,6/ et d’un autre http://www.tagadatsointsoin.fr/plop/mon-article,94  : l’URL de la rubrique est « plop,6 » et non « plop » tout court.

      Le système « arbo » met simplement bout à bout l’URL de chaque objet, donc : une_rubrique/une_rubrique/un_article.

      -  Si on décide d’ajouter un identifiant à tous les objets on obtiendra : une_rubrique,1/une_rubrique,2/un_article,456
      -  Si on retire les rubriques du processus, on aura simplement : une_rubrique/une_rubrique/un_article,456, ce qui est quand même mieux. Vu que Google préfère les articles aux rubriques, pas besoin d’avoir d’identifiant à l’URL d’une rubrique...

      Je ne sais pas si j’arrive à être clair ;-)

    • Je ne sais pas si j’arrive à être clair ;-)

      tout à fait limpide, et effectivement vu comme ca ca parait plus logique :-)

      Merci pour les précisions

    Répondre à ce message

  • 1
    Tropicaloo

    Bonjour,
    Si l’on applique le même principe aux brèves, cela veut-il dire que l’article 087 et la brève 087 vont être considérés comme la même url par Google pour son référencement ?
    Comment cela se passe-t-il lorsqu’il y a cette double numérotation ?
    Si quelqu’un parmi vous a un début d’info, je suis très curieux.
    Merci.

    • Je crois que les téléscopages sont gérés par SPIP (préférez la version 2.0 !). As-tu fait l’essai ? Pour ce test, il faudrait une brève et un article de même titre... Tu ne risques rien ;-)

    Répondre à ce message

  • Il semblerai que ce type d’urls soit incompatible avec l’effet Thickbox V2 en 0.3 !

    Répondre à ce message

  • 7

    Bonjour,
    ce plug-in marche-t-il avec d’anciennes versions de Spip ? Je dois m’occuper d’un site qui est sous 1.9.1...
    Merci,

    C. Bloch

    • Oui ça marche pour d’anciennes versions de SPIP, notamment 1.9.1. Mais ce n’est pas un plugin, il s’agît plutôt d’un mode opératoire.

    • Merci de votre réponse rapide. Mais en fait, j’avais déjà tenté la manip, et ça m’avait planté mon site... Plus rien de visible en public, et affichage bizarre (grosses polices de caractère) en privé...
      Je ne sais pas si c’est lié à la modification de propres.php ou si j’ai fait une mauvaise manip quand j’ai voulu réinitialiser les urls... Du coup j’ai dû tout réinstaller. La requête Mysql s’effectue comment exactement ?

      Merci,

      Cyrill

    • Alors, j’ai effectué toutes les manips SAUF la requête SQL. C’est donc bien de là que vient le problème. Auriez-vous plus de détails quant à la manière de l’effectuer ? Je suis nioubie, là...
      Merci

      C. Bloch

    • Pour préciser ma question, je suis sous Mac, donc j’ai MAMP. Je vois ma base de données, et le bouton SQL qui propose : Exécuter une ou des requêtes sur la base. Dois-je exécuter la requête sur TOUTE la base ou uniquement sur spip_articles ?
      Merci,
      C. Bloch

    • OK, j’ai trouvé, et je précise pour celles et ceux qui ne sauraient pas : vous allez dans phpMyAdmin, puis vous ouvrez votre base. Vous cliquez sur SQL, ça devrait vous proposer une option exécuter une requête SQL ; vous entrez le code donné par James, vous cliquez exécuter, et ça marche.
      Voilà, c’est des infos d’un nioubie pour d’autres nioubies, mais ça peut être utile...

      C. Bloch

    • Par contre, je rencontre un autre problème :
      le lien cliqué mène bien vers monsite.fr/nomdelarticle-123.html, mais le lien en survol affiche monsite.fr/nomdelarticle-123_123 ? Quelqu’un saurait-il où qu’on (je) peut modifier le lien affiché en survol ?
      Merci,
      C Bloch

    • il y a un plugin qui permet de réécrire les urls et donc de les nettoyer

      http://www.spip-contrib.net/Plugin-Effacer-url-propres

    Répondre à ce message

  • 5

    si on cherche cette format www.site.com/article-3chiifres c facile sans rien modifier.
    il suffit de changer l’id de votre premier article sur le site, et mettre 100, comme ca le prochain article que vous allez rédiger aura automatiquement 101 puis 101 ... et ainsi de suite ;)

    • L’astuce proposée ici ($url = $url.','.sprintf('%03d', $id_objet)) affiche des chiffres sur 3 digits : 1 donne 001, 42 donne 042, 768 donne 768. Au delà de 4 digits, ça marche tout à fait bien, 1045 donnera 1045 etc ... donc d’une part, pas besoin de faire des trucs tordus, donnés sans explications qui plus est. :)

      D’autres part, « sans rien modifier » ... ne modifiera rien, donc les urls n’afficheront aucun chiffre : De base, les urls propres n’ajoute aucun chiffre. La seule exception concernant les objets ayant rigoureusement le même titre calculé, ce qui reste assez rare. Le test proposé par cette contribution incluant, lui, systématiquement un chiffre... sur 3 digits minimum.

      Amicalement, ;)

    • bonjour,

      super contrib je cherchais depuis un moment comment faire et par chance je tombe enfin dessu.
      Par contre j’aimerai appliquer le même procédé aux brèves. comment m’y prendre ?
      merci beaucoup

    • Même question.
      J’ai regardé mais je n’ai pas trouvé le moyen de l’adapter aux brèves...

      Quelqu’un peut m’aider ?

      Merci d’avance.

    • J’ai finalement trouvé un moyen simple mais je ne suis pas sur qu’il soit optimale.

      Ajouté après le code pour l’article qui est celui là :


      if ($type == 'article')
      {
      $url = $url.','.sprintf('%03d', $id_objet);
      }
      elseif ($n > 0)
      {
      $url = $url.','.$id_objet;
      }

      Le code pour la brève :


      if ($type == 'breve')
      {
      $url = $url.','.sprintf('%03d', $id_objet);
      }
      elseif ($n > 0)
      {
      $url = $url.','.$id_objet;
      }

      Y reste plus qu’à faire pareil si vous voulez l’ajouter aux rubriques.

    • merci ça marche super

    Répondre à ce message

  • 2

    Hello James :)

    De 2 choses l’une :
    -  serait-il possible qu tu nous en dises un peu plus sur ces fameux 3 numéros ? En quoi sont ils vraiment utiles et qu’est ce que tout ceci apporte de plus en terme de SEO qu’une arbo plus classique sous forme de racine.site.web/rubrique/sousrubrique/article ? Ca c’était pour la question chiante du jour :P

    la seconde :
    -  je te cite

    Mettre à jour des urls propres existantes

    Si vous aviez déjà activé les urls propres par le passé, vous devrez mettre à jour les urls propres qui ont déjà été calculées. Comme il n’existe pas, à ce jour, d’interface graphique pour ce faire, et ce n’est pas la peine de râler sur ce fait dans le forum de cette page, d’avance merci ;), vous aurez à le faire à la main, avec la requête SQL suivante :

    UPDATE spip_articles SET url_propre='';

    et je répond ceci : Plugin effacer urls propres ;)

    Bonne soirée à tous

    • Serait-il possible que tu nous en dises un peu plus sur ces fameux 3 numéros ?

      Non :P

      C’est pas de la mauvaise foi, c’est juste parce que tout ce que je sais est expliqué en intro de cet article.

      J’ai fait cet article parce que la solution technique était facile, contenait un minimum de pédagogie et que c’était régulièrement demandé, sans d’ailleurs que qui que ce soit n’ait jamais pris la peine de donner lui-même des explications. Donc, il existe dans l’unique objectif de soulager les modérateurs de forum et de liste en leur évitant de se répéter : juste pointer ici.

      SEO : Je ne sais pas ce que c’est, tu deviens très jargonneux tout d’un coup. Si tu penses que ça intéresse du monde, je t’en prie, écris un article à ce sujet :) N’oublie pas d’être didactique ;)

      Enfin, il n’est absolument pas incompatible de faire une arborescence virtuelle et d’associer 3 chiffres dans une url, c’est évoqué plus bas dans les forum, mais là encore, le propos n’est pas là.

      Sinon, oui, le plugin, bonne idée de faire le lien :)

    • SEO = Search Engine Optimization

      C’est effectivement un des sigles à la mode maintenant, utilisé pour regrouper sous une même étiquette tout ce qui a trait à l’amélioration du positionnement d’un site web dans les moteur de recherche, ce que propose ta contrib en l’occurence ;)

      Didactique ? Comment ca didactique ? /me sors son shotgun et tire en aveugle... :P

    Répondre à ce message

  • 2

    et si on cherche de remplacer les « , » par les « - » ?
    Qui ce que je dois changer ?

    Ex : www.site.com/033-titre.html

    Merci

    • si on cherche de remplacer les « , » par les « - »,
      que je dois changer ?

      dans le code légendé « après », remplacer la virgule par un tiret :)

    • ok, parfait, ca marche
      merci

    Répondre à ce message

Ajouter un commentaire

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.

Qui êtes-vous ?
[Se connecter]

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