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

  • Merci beaucoup ca marche parfaitement pour moi (propres2)

    Répondre à ce message

  • 3

    je sais pas si ca sera possible de faire des urls de ce type, j’ai cherché partout mais j’ai rien trouvé :
    voila ce que je vx

    www.site.com/rubrique/ss-rubrique/article001.html

    rubrique : la rubrique de la page et de mm pour sous rubrique
    puis le nom de la page dois contenir 3 chiffres

    c vraiment urgent

    Merci d’avance

    • Cette contributions n’est pas prévue pour ça. Mais c’est possible que tu parviennes à tes fins en mixant cette contrib avec celle-ci. Volà, bon amusement ;)

      à titre plus personnel, les « vx », les « mm » et les « c » ne me parlent pas du tout, merci de faire un tout petit effort et d’abolir les notations sms sur ces pages, d’avance merci :)

    • ok, pour votre remarque, j’avais pas fait attention.
      Concernant ce que je cherche, j’ai pas vraiment une idée comment le faire, donc si vous pouvez m’aider à ce propos, ca sera de top surtout que j’ai passé trois jours à la recherche de la réponse sur le net.

      Merci d’avance

    • je préfere aussi ce type d’url :

      www.site.com/rubrique/ss-rubrique/titre-article-001.html

      toujours avec les trois chiffres pour l’article

      Merci james

    Répondre à ce message

  • 2

    Hello,

    J’ai un agenda et seuls ses articles pourraient être interessants dans Google actu.
    -  Est-il possible de limiter cette fonction avec un $id_rubrique = 9 ; posé quelque part ? (Après je ne sais comment peut réagir Google à ça ...mais bon je ne risque rien non plus.)

    -  Dernier point (si promis c’est le dernier) Faut-il modifier quelques lignes du plugin Site-Map ? Pour que Google comprenne que c’est de l’actu ?

    • Pour le premier point, il faut modifier la fonction _generer_url_propre() du que tu auras copier à partir du fichier d’origine, notament la requête de la ligne 64, afin de recupérer la rubrique s’il s’agit d’un article. Ensuite, à l’endroit ou l’on effectue le test (ligne 118) faire un AND $id_rubrique == 9, je suppose ?

      Pas d’avis pour le second point.

    • Ok merci James, j’essaie ça.

    Répondre à ce message

  • 6

    Salut.
    Chouette contrib que j’utilise avec succès sur de nombreux sites.
    Par contre j’ai une question liée à un site déjà existant et déjà bien référencé.
    En fait je voudrait rajouter les chiffres sur les url afin donc de les indexer sur google news, mais le problème est que j’ai déjà beaucoup de pages référencées sur le moteur google et je ne souhaite pas que ces pages tombent en 404.
    DOnc et voilà la question :
    Est-ce que je peux utiliser la contrib de manière à ce qu’elle ne s’applique qu’aux nouveaux articles. En d’autres termes est-ce que si je l’installe et ne vide pas la base des url précédemment écrites, les chiffres dans les url ne s’appliqueront qu’à compter des articles à venir ??? sans risque ??

    • Installer sans mettre à jour la base, c’est sans risque et ça marche, je confirme.

    • Merci ... super

    • Thierry

      Question : s’il l’on applique la mise à jour des urlspropres via SQL, on ne doit pas avoir de soucis de page 404 sur les anciennes urls propres puisque de toute façon le .htaccess relis avec l’adresse réelle non ?

    • Thierry

      Je me répond : non !
      Il y a bien une erreur 404 de retournée !

      seule la gestion des articlexxx.html est récursive

    • Euh, si. Tout dépend de ce que tu mets dans le champ url_propre de ta table article. Veille au cache aussi.

      Tu DOIS mettre ,XXX à la fin de ce champ toi même dans ce cas, c’est ce que fait la contrib en fait.

    • Je confirme : ça marche très bien !! La preuve en images (Com-Unik)

      Merci pour cette contrib qui sauve des vies (si si ! :P)

    Répondre à ce message

  • 1

    et comment faire pr avoir .html
    avec ce contrib, les urls de mes rubriques sont de type
    www.site.com/titre,001 alors que je vx 001.html

    comment faire ?

    Merci

    Répondre à ce message

  • 5
    Charles

    J’ai suivi les étapes avec méthode, mais bien que j’ai les bonnes URLS sur le plan formel, elles ne pointent pas sur les pages. Comment faire ? Qu’est-ce que j’ai mal fait ?

    http://www.respublicanova.fr/spip.php

    • à la racine du site, il faut renommer le fichier htaccess.txt en .htaccess afin d’activer la réecriture d’url du serveur web (apache rewrite rules)

    • Charles

      J’ai bien fait la chose, sans toucher à l’intérieur de la page, mais cela ne donne toujours rien.

      J’ai donc réinstallé l’ensemble de SPIP, suivi chacune des étapes :
      -  création « mes_options.php »
      -  renommer « htaccess.txt » en « .htaccess »
      -  créer dans « squelettes/ » un sous-repertoire « urls/propres.php » en faisant les corrections ci-dessous énoncées.

      Comme vous pouvez le constater, j’ai toujours un problème d’adresse.

      Donc, deux questions :
      -  est-ce qu’il faut modifier le contenu de « .htaccess » ? (je ne l’ai pas fait)
      -  est-ce que c’est Online.net qui ne reconnaît pas la récriture des urls ?

      Merci de votre réponse ! Je rame...

      Charles

    • Online, c’est free. Il n’y a pas de rewrite rules activé. désolé, mais sauf erreur, tu ne peux utiliser cette contrib :(

    • Charles

      Merci beaucoup pour la réponse :au moins, je sais à quoi m’en tenir !
      Du coup, qu’estce que vous conseillez comme hébergeur pour une excellente compatibilité, mais aussi toutes les qualités attendues d’un bon hébergement ? En tout cas, il faut qu’il soit PHP car je n’ai pas l’intention de passer en ASP.

    • Si tu passes en ASP tu peux dire bye bye à SPIP :)

      j’ai pas de conseil particulier, à ma connaissance, tous, sauf free, accepte la réecriture d’url et encore peut-être qu’en demandant ...

      Et puis, je suis bête, j’ai pas pensé à ça, mais tu peux utiliser cette contrib, moyennant l’utilisation de 'propres-qs' (qui a quand même été faite pour ça....) tsss...

      propres-qs fait la même chose moyennat un point d’interrogation avant le titre, exemple :

      http://ton.site.tld/mon-titre deviendrait http://ton.site.tld/?mon-titre

      méthode, exactement comme décrit dans cet article mais au lieu de faire référence à $type_urls = 'propres'; tu ecris dans mes_options.php, $type_urls = 'propres-qs';

      Sinon, pour changer d’hébergeur, je n’ai pas de conseils particuliers, google me dit :

    Répondre à ce message

  • 1

    Pensez aussi à mettre à jour les rubriques avec :

    UPDATE spip_rubriques SET url_propre=’’ ;

    • salut,

      ça marche, mais en l’état, ce n’est pas nécessaire. La modif proposée n’altère pas l’url des rubriques.

    Répondre à ce message

  • 8

    Hello James (et les autres aussi, hien , :D )

    Une question con en passant : ça marche sous Free ?

    (Et plus généralement, ça marche avec des url propres-QS et pas de fichier .htaccess, sur les serveurs dont le mod_rewrite n’est pas activé :/ ) ?

    • Oui. C’est une simple surcharge de fichier. ’propres2’ (avec des .html) marche aussi ;)

    • j’ai testé « propres-qs » tout marche nikel sauf le lien vers les sites (/spip1_9/ ?@BIRDY-NAM-NAM@) erreur 404 : * Erreur(s) dans le squelette
      o Aucun squelette ’syndic’ n’est disponible...,

      comprend pas....

    • Après vérification, il s’agît d’un bug SPIP ! :)

      Avec ou sans, cette modif, le problème existe, avec ou sans le mode qs, d’ailleurs. J’ajoute un ticket ;-)

      Merci du signalement.

    • pof, c’est corrigé dans la version de dev de spip1.9.2 ;-)

      http://trac.rezo.net/trac/spip/chan...

    • nikel merci bien !!!!

    • Ah ouais coll merci :D

      Parce que j’avais le même bug en propres qs. Ca doit être l’@ qui n’est pas digéré ?

    • non, pas du tout. c’est parce le squelette syndic.html n’existe pas.

    • J’ai failli dire une c*n*e*i* ! c’est en effet un squelette site.html que j’ai et non pas un syndic :oops :

    Répondre à ce message

  • 3

    Bonjour,
    Je n’avais pas encore manipulé les différentes formes d’URLs et à partir de cet article clair, net et précis, j’ai donc commencé par changer mes_options.php avec : $type_urls = « propres » ;
    puis j’ai renommé le htaccess.txt sans rien y changer.
    Et...... ça marche, les URLS sont en français.

    Ensuite, j’ai changé le contenu de propres.htm dans squelettes/urls/
    j’ai vidé le cache et je me retrouve avec cette erreur pour toutes les pages testées :

    Fatal error : Call to undefined function : _q() in /data/www/s/i/te.fr/html/squelettes/urls/propres.php on line 119

    mon site est en 1.9.1

    dd

    • gloups, c’est fait sur une version de developpement :D

      la fonction _q() remplace (is_int($a)) ? strval($a) : ("'" . addslashes($a) . "'")

      Je vais faire un erratum dans l’article ....

    • Voilà.... il y avait une ligne de trop dans le cadre. ça marche dans les deux cas, 1.9.1 stable et dev. Merci du signalement

    • ah merci, c’est bon maintenant
      dd

    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