L’intérêt du renommage des rubriques est double :
- Permettre à tout un chacun de mémoriser l’adresse de la partie du site qui l’intéresse.
- Permettre aux moteurs de recherche (Google et google-like) de mieux indexer votre site par une bonne lecture des url.
La façon la meilleure de réaliser cela, c’est les règles de rewrite url d’Apache. Evidemment, la lumineuse explication que nous en a fait le site de Spip n’est pas toujours limpide ni facile à mettre en oeuvre pour le quidam.
Voyons si nous ne pouvons pas faire plus simple :
Nous allons :
- Renommer les rubriques avec leurs #TITRE ;
- Créer l’arborescence et ses raccourcis ;
- Corriger les problèmes de cohérence ;
- Apprendre à refaire nos boucles SPIP.
Renommer les rubriques
C’est un préalable, une rubrique se définit par un mot et un seul qui la caractérise et dont l’assemblage avec ses ascendants est « logique ».
Exemple : /Maladie/Diagnostic/Biologie
Gardez une logique de nommage et tenez-vous y ! (Majuscule ou pas sur la première lettre, singulier ou pluriel etc. )
Vous pouvez utiliser des caractères accentués car j’ai fait pour vous un petit filtre spip pour enlever les accents secondairement.
Créez PHYSIQUEMENT votre arborescence
Allez zou, direction votre client FTP préféré. Vous créez les répertoires aux noms de #TITRE de vos rubriques mais sans accents. Dossiers, sous-dossiers avec dans chaque dossier un fichier index.php vide pour l’instant.
C’est fait ? Bien.
Alors tapez dans chacun des fichiers index.php la seule ligne suivante :
<?php include("http://www.votresite.com/rubrique.php3?id_rubrique=xx"); ?>
Evidemment « xx » c’est le numéro de rubrique que spip a attribué à chacune de vos rubriques et que vous allez oublier très vite après notre manip.
Et maintenant ? Corriger les problèmes...
Bon, c’est joli : /Rubrique1/Rubrique1.1/Rubrique1.2/ donne bien la page escomptée mais j’ai des problèmes de liens relatifs qui ne fonctionnent plus.
C’est vrai ? ben dommage :-)
Non, en fait c’est tout bête : rajoutez cette simple ligne dans votre squelette de rubrique dans le <head>
:
<base href="#URL_SITE_SPIP">
Et voilà, toutes les images sont à nouveau bonnes :-)
Vous êtes trop forts les gars !
Hum, encore des problèmes ? Vraiment ?
Ah ben oui, on a rien sans rien.
Vos liens relatifs sans url ne marchent plus ? <a href="#top">Top</a>
vous renvoie sur la page d’accueil du site ? Logique, c’est vous qui avez défini plus haut le base href :-)
Heureusement, petits veinards, php a pensé à vous ! $PHP_SELF n’est pas pour les chiens, elle appelle la page en cours de lecture soit rubrique.php3.
Comment ça ça ne vous aide pas ?
Mais si, il faut juste y ajouter l’#ID_RUBRIQUE. Ce qui nous donne donc <a href="<? $PHP_SELF.?id_rubrique=#ID_RUBRIQUE ?>#top">top</a>
Et voilà le travail !
Mais en spip ça nous donne quoi tout ça ?
Bon, c’est vrai #URL_RUBRIQUE n’est plus vraiment ce qu’il était... Tout se perd, plus rien n’est comme avant. A qui le dites vous ma bonne dame mais vous ne croyez tout de même pas qu’en vous passant d’Apache vous n’alliez pas y laisser des plumes ?
Dorénavant il va vous falloir remplacer #URL_RUBRIQUE par :
#URL_SITE_SPIP/[(#TITRE|enlever_accents)]
pour les niveaux d’arborescence primaire
et pour les sous-rubriques par :
<a href="#URL_SITE_SPIP/
<BOUCLE_sshierarchie(HIERARCHIE){id_rubrique}>
[(#TITRE|enlever_accents)]/
</BOUCLE_sshierarchie>[(#TITRE|enlever_accents)/]
Voilà, ça marche :-)
« Ben oui mais c’est quoi la fonction enlever_accents, il l’a pas mon spip ce filtre » allez-vous me dire.
Oui, c’est vrai ça mais je vous en avais déjà parlé plus haut.
Bon ben... va falloir la rajouter dans mes_fonctions.php3 mes poulets :-)
Allez zou :
faites moi un copier/coller de ces lignes dans le fichier qui va bien (mes_fonctions.php3) :
/////////////////////////////////////////////////////////////////////////
////////////////Pour enlever les accents d'un mot
//////VersionPc:
////////"ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàáâãäåçèéêëìíîï©£òóôõöùúûü~ÿ"
/////VersionMac:
///////"¿¡¬?ƒ?«»... ÀÃÕŒœ""''÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ
/////Pour utiliser la version mac, deplacer le # la ligne au dessus
////////// Exemple : [(#TEXTE|enlever_accents)]
///////////////////////////////////////////////////////////////////////
function enlever_accents($texte){
if (!(is_string($texte)))
return ("");
$sortie = strtr($texte,
"ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàâãäåçèéêëìíîï©£òóôõöùúûü~ÿ",
#"¿¡¬?ƒ?«»... ÀÃÕŒœ""''÷Ÿ/€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔ?ÚÛÙ?ˆ
"AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
return $sortie;
}
/////////////////////////////////////////////////////////
Quoi des questions ? Comment ça des questions ? Ben allez y : y a le forum pour ça !
Discussions par date d’activité
10 discussions
Ouhlàlà que c’est laid...
Et comment tu fais quand on ajoute une rubrique ? Tu ajoutes un fichier à chaque fois ?
Moi je propose que tu enlèves SPIP et que tu écrives plutôt tes pages en html...
validée en mars 2003 poulet :-) (proposée chsé plus combien de temps avant)
Les Rewrite Rules n’étaient supportées que par peu d’hébergeurs mutualisés.
Ceci dit je suis d’accord avec toi pour dire qu’on devrait mettre une date de péremption aux contribs :-)
bah le syteme me semblait intéressant mais oui j’ai vu qu’il y a une contribution qui propose un systeme d’url rewrite avec un systeme /repertoire/article se qui correspond a l’objectif.
je me demande si il existe un cms qui en natif utilise un system de se type une rubrique = un repertoire ?
Répondre à ce message
GENIAL !
Je cherchais justement un truc comme ça !
Franchement merci.
Ahlala, ces back quotes ;-)
Comme d’hab pour quasiment tous les tutos qui sont ici, on ne sait pas la version de SPIP utilisée.
Oulala...la version de spip ? 1.4 je pense...
Mais franchement : cette bidouille n’a plus grand intérêt maintenant que quasiment tous les hébergeurs proposent l’url rewriting.
La contrib a été approuvée en mars 2003, elle a donc été faite en 2002 et trois ans et demi en informatique ça fait un bail hein :-)
Répondre à ce message
le code à mettre dans mes_fonctions est incrompréhensible.
Quelqu’un peut me le transcrire pour que je puisse essayer cette fonction qui me semble intéresante.
Merci à tous
Pierre
Milles excuses
erreur de lecture de ma part
Sorry
Répondre à ce message
Le code de mes_fonction_php3 n’est plus lisible dans l’article
Est ce que quequ’un peut me l’envoyer.
ou le remettre en état
Merci
@+
Répondre à ce message
Marche po sur free.fr
free a désactivé il y a quelques mois toute une série de fonctions disponibles en standard sur php : c’est un choix unilatéral. Je pense que peu de scripts php non faits sur mesure fonctionneront sur free.
Le mieux est de prendre un VRAI hébergeur, ils ne sont pas si cher...
Répondre à ce message
Moi j’apporterai quelques modifications pour encore simplifier tout cela....
Il suffit d’utiliser la fonction header() de PHP au lieu de la fonction include()
Pourquoi ?
Très simple : la fonction header() de PHP peut être utilisée pour effectuer une redirection sans modifier l’adresse entrée dans le navigateur :
Exemple :
http://www.monsite.com/rubrique1 ne se transforme pas en http://www.monsite.com/rubriques.php3?id=1 ce qui conserve la cohérence des raccourcis vis-à-vis du visiteur.
Comment utiliser la fonction header() ?
Voici la nouvelle ligne à entrer dans le fichier index.php à la place d’include :
(où xx est à remplacer par le numéro de la rubrique en question)
Et alors me direz vous ?
Plus aucune autre modification à effectuer, ça marche tout seul B-)
C’est-y pas bien ça ? :-D
gbws
le ptit nouveau qui pense PHP :-p
Juste une petit précision :
- header(« location :/rubriques.php3 ?id...=xx ») est correct
- header("location :http://www.monsite.com/rubriques.php3?id...=xx") fonctionne mais l’adresse entrée par le visiteur (à savoir www.monsite.com/rubrique1) deviandra http://www.monsite.com/rubriques.php3?id...=xx dans son navigateur alors faite attention.
Moila c’est tout :-)
JOLI !
Merci, je vais tester ça.
Bon, ben après c’est simplement la réécriture des url avec les boucles Rubriques et hiérarchies qui se pose.
php rUl3z !
ah je l’avais bien dit qu’il y a vait plus simple :-)
Attention ! include se passe côté serveur, header côté client.
Quest-ce que ça veut dire ? Le procédé décrit dans l’article marche à coup sûr, par contre il n’est pas garanti qu’avec header on obtienne le résultat souhaité à coup sûr. Avec header on exclue pas mal de moteurs de recherche de son site parce qu’ils ne suivent que les liens directs, pas les redirections HTTP. Les robots ne sont pas de vrais clients HTTP respectant tous les éléments du protocle HTTP. Voilà pourquoi.
Répondre à ce message
Pour ceux que la réécriture d’URL intimide encore, voici deux articles en français qui peuvent aider à y voir plus clair :
Le fichier .htaccess
Des URLs pour plaire aux moteurs de recherche
... ma petite contribution à la communauté SPIP ;-)
Répondre à ce message
Pour des rubriques, oui. Mais quand son site Spip est construit à la manière du tutorial sur les jeux vidéos. En quelque sorte, on a une rubrique pour chaque jeu (Dans mon cas 650 Rubriques) Comment faire pour avoir des url lisible dans ce cas ??
Merci d’avance
Répondre à ce message
Ça ne marche pas...! Il m’affiche une parse error dans la ligne du script index.php :
D’où ça vient et comment faire ?
Merci
La vie est cruelle parfois...
Bon ben alors il faut que ça marche :
alors prenons une syntaxe rigoureuse :
Et là, plus de parse, de spartes ni de thraces. ;-)
Effectivement, c’était pourtant simple. J’avais pourtant essayé de modifier la syntaxe, sans succès.
Merci de cette démonstration fulgurante et sans appel !
Mon intelligence n’était pas arrivée à un tel niveau
:))
J’ai encore quelques pb d’images et de liens, mais rien de bien grave.
Merci !
Moi même en faisant cela ça ne marche pas...
Répondre à ce message
Un grand merci @ toi Philippe, je teste de toute urgence !!
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 : |