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='';
Discussions par date d’activité
19 discussions
Merci beaucoup ca marche parfaitement pour moi (propres2)
Répondre à ce message
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
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
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
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 ?
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
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
mets ’propres2’ au lieu de ’propres’ comme valeur pour
$type_urls
Répondre à ce message
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)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 :(
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
deviendraithttp://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
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
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
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 :
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.
Suivre les commentaires : |