SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 155 visiteurs en ce moment

Accueil > Statistiques et référencement > Réécriture d’URL > URL propres en arborescence virtuelle > URL propres en arborescence virtuelle

URL propres en arborescence virtuelle

30 avril 2007 – par Boris Lechner – 147 commentaires

4 votes

Ceci est une archive périmée mais qui reste intéressante, parfois autant pour l’article que les commentaires associés.

Permet d’obtenir une URL synthétisant l’arborescence du site

Problématique

Une belle arborescence de rubriques devrait toujours être représentée par une belle url synthétisant cette arborescence. Et pourtant, même avec les urls propres, il était difficile d’obtenir plus qu’un titre et un identifiant peu parlants dans une barre d’adresse.

Avec un site décomposé de la forme suivante :

/ (Racine)
+ Télé-achat (Secteur)
| + Catégorie cuisine (Rubrique)
|   + Le plus beau presse-agrumes du monde (Article)

Il paraît logique d’avoir des adresses du type
-  http://monsite.exemple/
-  http://monsite.exemple/tele-achat/
-  http://monsite.exemple/tele-achat/categorie-informatique/
-  http://monsite.exemple/tele-achat/categorie-cuisine/le-plus-beau-presse-agrumes-du-monde.html

et bien c’est exactement ce qui vous est proposé ici !

Mais alors, Pierre, comment ça marche ?

C’est très simple Maryse ! Le système se base sur le même principe que les url_propres fournies dans la version officielle de Spip, sauf qu’au lieu de ne stocker que le titre dans le champ url_propre de la base de données, nous allons dorénavant stocker toute l’arborescence « propre ».

Il faudra aussi mettre en place une redirection d’adresse, puisque le répertoire tele-achat n’existe pas sur notre serveur web.

Allez, même pas peur, on va installer et paramétrer d’un coup !

Téléchargez et décompressez l’archive :

Zip - 10.2 ko
url-propres-arbo-v1.8.zip

C’est fait ? Alors c’est parti !

Le fichier propres-arbo.php est à placer dans le répertoire
{monDossierSpip}/ecrire/urls/.

Dans sa configuration par défaut, les urls ne sont pas limitées en longueur, et tous les caractères sont convertis en minuscules.
Si ces règles ne vous conviennent pas, vous pouvez changer la configuration du script via les constantes suivantes :
-  _taille_min_url_propre : la longueur minimale de la totalité de l’url (0 pour ne pas limiter). Si la taille de l’url calculée est plus petite, celle-ci sera remplacée par son type suivi de son identifiant (exemples : rubrique1, article42,...)
-  _taille_max_url_propre : la longueur maximale de la totalité de l’url (0 pour ne pas limiter)
-  _taille_max_champ_url_propre : la longueur maximale d’un niveau de l’url (0 pour ne pas limiter)
-  _mIxEdCaSe : booléen indiquant si les majuscules sont autorisées dans l’url (0 pour interdire, 1 pour autoriser)

Pour basculer sur ces url propres, la seule chose à faire est d’éditer votre fichier
mes_options.php
afin de positionner la variable
$type_urls = "propres-arbo";

Attention, le fichier mes_options.php n’est pas placé au même endroit selon les versions de Spip :
-  {monDossierSpip}/ecrire/mes_options.php pour SPIP 1.9.1
-  {monDossierSpip}/config/mes_options.php pour SPIP 1.9.2 et ultérieures

Du bon usage des redirections

C’est bien joli de patcher notre SPIP, mais il faut aussi que les requêtes passées au serveur web lui parviennent.

Pour cela, deux solutions :
-  le mod_rewrite d’Apache : la solution la plus propre lorsque le module est disponible sur votre serveur
-  l’utilisation des ErrorDocument : une solution moins élégante techniquement mais toute aussi efficace pour les serveurs les plus démunis (n’hésitez pas à envoyer vos dons pour les aider).

Redirection avec le mod_rewrite

Pas grand chose à faire, il suffit de prendre le fichier mod_rewrite/htaccess.txt et de le placer à la racine de votre site SPIP après l’avoir renommé en .htaccess [1].
Il vous faudra peut-être décommenter et modifier la directive RewriteBase de ce fichier si SPIP est installé dans un sous-répertoire sur le serveur web.
Par exemple, si SPIP est installé dans http://monsite.exemple/spip/ il faut définir RewriteBase /spip/.

Redirection avec la directive ErrorDocument

Ici, ça va vite aussi, il vous faut deux fichiers :

- ErrorDocument/spip-rewrite-with-404.php qu’il faut placer à la racine de votre site SPIP.
Il vous faudra dans tous les cas créer ou définir une page d’erreur 404. Vous en trouverez une dans ErrorDocument/404.html que je vous recommande de placer dans votre dossier de squelettes. Si toutefois vous la placiez ailleurs ou sous un autre nom, il vous faudra modifier la ligne $this->pagedestination="squelettes/nom/de/votre/page/404.html"

Il vous faudra peut-être aussi modifier la variable $this->installdir de ce fichier si SPIP est installé dans un sous-répertoire sur le serveur web.
Par exemple, si SPIP est installé dans http://monsite.exemple/spip/ il faut définir $this->installdir=",^/spip/,"; (la chaîne utilisée est un filtre pour expression rationnelle, il faut donc laisser les virgules l’encadrant ainsi que le ’^’ qui indique que l’on travaille uniquement depuis le début de la chaîne de caractères).

-  ErrorDocument/htaccess.txt qu’il faut aussi placer à la racine de votre site SPIP après l’avoir renommé en .htaccess [1].
Il vous faudra peut-être modifier la ligne ErrorDocument 404 /spip-rewrite-with-404.php de ce fichier si SPIP est installé dans un sous-répertoire sur le serveur web.
Par exemple, si SPIP est installé dans http://monsite.exemple/spip/ il faut adapter la ligne en ErrorDocument 404 /spip/spip-rewrite-with-404.php";

Modifications à apporter à vos squelettes

Ça n’est pas encore terminé ! Puisque l’on crée une arborescence virtuelle, le navigateur et le serveur web ne vont pas s’y retrouver lors des inclusions d’images, scripts, feuilles de styles, etc.

La solution est très simple : ajouter la balise <base href="#URL_SITE_SPIP/" /> dans l’en-tête de votre site.

Au secours, les boutons d’administration ne fonctionnent plus !

Mais non Maryse, inutile d’appeler Jack Bauer, il y a toujours une solution, par contre ça implique de mettre les mains dans le cambouis, et comme Jack est occupé avec les chinois du FBI, il va falloir se débrouiller !

Tout d’abord, recopiez la fonction suivante dans le fichier mes_fonctions.php se trouvant dans votre dossier de squelettes :

Ensuite, recopiez simplement le fichier bonus/administation.html dans le dossier {monDossierSpip}/squelettes/formulaires/.
ATTENTION ! si vous utilisez une version antérieure à la 1.9.2, il vous faut renommer administration.html en formulaire_admin.html.

Allez, encore un effort, on y est presque, il reste la modification la moins propre selon moi (si quelqu’un a mieux, lachez vos comms !) :

Recherchez la chaîne

dans les fichiers
-  monDossierSpip/ecrire/public/admin.php
-  monDossierSpip/ecrire/public/debug.php
puis remplacez la par

Problèmes connus

RealET a dit :

« Une implémentation foireuse commune à Internet Explorer 6 et FireFox 1.5 fait que sur ces navigateur, le base href est pris en compte pour toutes les ancres de la page, ce qui a pour effet de faire planter toutes les ancres et notes de bas de page. »

Je n’ai malheureusement pas de solution à proposer à ce sujet, si quelqu’un connaît un hack, qu’il parle maintenant ou se taise à jamais...


Jean-Kevin, pirate-kiddie des temps modernes a dit :

« C’est nul cette modification : je viens de changer un nom d’article ou de rubrique, mais l’url ne change pas ! »

Mais non Jean-Kevin, c’est normal ! SPIP est partisan du moindre effort, et ce pour le bien de nos serveurs web. Ainsi il ne recalcule pas les urls propres tout seul. Mais n’aie pas peur, il existe un splendide plugin pour lui dire de le faire.


Une autre question ?

Notes

[1sous Windows et MacOS, on ne peut pas renommer un fichier en .htaccess. Il faut donc utiliser votre client ftp préféré pour envoyer le fichier, et utiliser le même client pour renommer ensuite le fichier sur le serveur.

Dernière modification de cette page le 19 juillet 2014

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 6 octobre 2009 à 21:21, par totomania En réponse à : URL propres en arborescence virtuelle

    Bonjour,

    j’ai le même problème que momo, le pluggin ne marche plus lors de la migration de spip vers la version 2.0, je ne peux pas changer mes liens par ceux proposer par la nouvelle version de spip car je vais me retrouver avec trop de lien 404, j’ai presque 2000 articles sur mon site.

    Quelqu’un a des suggestions ou une solution.

    Merci pour votre aide.

    Répondre à ce message

  • Le 2 février 2009 à 11:49, par lega En réponse à : propres-arbo pas autorise

    Bonjour, j’ai un problème avec cette extension. Après une mise a jour vers spip 2.0.3 impossible de l’utiliser, spip m’affiche « propres-arbo pas autorise ».

    Quelqu’un a t’il le même problème ?

    Merci

    • Le 3 juin 2009 à 17:36, par momo En réponse à : propres-arbo pas autorise

      Bonjour, j’ai un problème avec cette extension. Je suis sous spip 2.0.3, et impossible de l’utiliser, spip m’affiche « propres-arbo pas autorise ».

      Quelqu’un a t’il trouver une solution ?

      Merci

    Répondre à ce message

  • Le 20 mai 2009 à 16:54, par wn En réponse à : URL propres en arborescence virtuelle

    Bonjour,

    J’ai le problème que décrivait Seb dans certains précédents posts, mais la modif de strrpos vers stripos n’y change rien, le résultat est le même dans la page debug ( ?var_mode=debug ) pour l’#ENVURL, il manque l’arborescence depuis la racine du site jusqu’à la page. C’est comme si la ligne « $url = substr($url, stripos($url, ’/’) + 1) ; » dans propres-arbo.php n’avait pas d’influences.

    Quelqu’un-t-il la solution ?

    Répondre à ce message

  • Le 13 mai 2009 à 10:23, par ? En réponse à : URL propres en arbo et plugin form&table

    Bonjour,

    Après l’installation des url propres en arbo et sa configuration, je me retrouve avec des erreurs sur les formulaires du plugin form&table.
    Les scripts ne sont pas retrouvés (cherchés depuis le repertoire courant /rubrique/), envoi des données ne fonctionne plus.

    Merci de m’informer des modifications à faire si vous avez été confronté au pb.

    SPIP 1.9.2g

    Florent

    Répondre à ce message

  • Le 20 mars 2009 à 11:12, par Seb En réponse à : URL propres en arborescence virtuelle

    Je conseille à tous de passer en Spip 2.0 et d’oublier cette contrib au profit de la nouvelle gestion native des url de type arbo apportée par la nouvelle version de notre CMS écureuil préféré. Cette dernière ne poste aucun problème (notamment pour les boutons d’admin), elle est beaucoup plus souple (car personnalisable via quelques variables) et simple à mettre en place (case à cocher via l’espace privé). Par contre, pour tous ceux qui souhaitent rester en 1.9, sachez que cette contrib - une fois le strrpos() ; corrigé - est vraiment très pratique, encore merci à son auteur !

    Répondre à ce message

  • Le 29 novembre 2008 à 12:03, par Max En réponse à : Boutons d’administration

    Je suis sous Spip 1.9.2d et j’ai suivi le tuto concernant les boutons d’admin, rien n’y fait ils n’apparaissent pas sur le site public (alors que je suis identifié en admin) avec les nouvelles URL. Quelqu’un a-t’il réussi ? Merci par avance de m’expliquer comment régler le problème, ce n’est pas du tout ergonomique de vider le cache total du site à chaque modification sur les squelettes pour ensuite tout recalculer manuellement ... Petite précision : ils apparaissent lorsque je visite le site avec les anciennes URL type « spip.php ?page= ».

    • Le 23 décembre 2008 à 08:33, par Max En réponse à : Boutons d’administration

      ... Problème toujours pas réglé, je réitère ma question ... Merci d’avance

    Répondre à ce message

  • Le 23 octobre 2008 à 10:07, par Benoit94 En réponse à : Gestion des rubriques/articles

    Bonjour,
    tout d’abord merci à tous ceux qui prennent du temps pour développer des contrib et aider les utilisateurs de SPIP.

    J’ai un probleme assez étrange, j’utilise la méthode « Redirection avec le mod_rewrite », mais je n’arrive pas a obtenir une url du type :
    « http://monsite.exemple/tele-achat/categorie-cuisine/le-plus-beau-presse-agrumes-du-monde.html »

    En fait toutes mes urls sont du type « http://monsite.exemple/rubrique/ » ou « http://monsite.exemple/article.hmtl » ... l’arborescence n’est pas représentée :-(

    J’espere avoir été clair,
    d’ou peut bien venir ce probleme ?

    • Le 28 octobre 2008 à 15:02, par domusse En réponse à : Gestion des rubriques/articles

      Bonjour,
      Cette contrib est apparemment super mais je n’arrive pas à la faire fonctionner.

      Sur le lien d’un article du type monsite.com/article.html, ç’est ok.
      Cet article fait partie d’une rubrique donc quand je clique sur le lien de la rubrique, j’ai monsite.com/rubrique/, très bien. Sont listés alors les articles de la rubrique et là, le lien de l’article est monsite.com/rubrique/article.html et là, ça na va plus, j’ai la page d’erreur 404.

      En résumé :
      monsite.com/article.html : ok

      monsite.com/rubrique/ : ok

      monsite.com/rubrique/article.html : erreur 404 alors que c’est ce que je souhaite avoir au final.

      Comment faire ?

      Merci pour votre aide

      Domusse

    • Le 6 novembre 2008 à 23:12, par Seb En réponse à : Gestion des rubriques/articles

      Je pense qu’il faut que tu regardes mes trois posts précédents ainsi que sur mon Blog perso (le lien est sur le deuxième post).

    Répondre à ce message

  • Le 19 septembre 2008 à 14:19, par Seb. En réponse à : Problème erreurs 404 !

    Bonjour, j’ai installé cette contrib et en gros ma page secteur fonctionne seulement chaque page rubrique (et sous-rubrique) ainsi que les pages d’article renvoient des erreurs 404. Pouvez-vous m’aider ? Si possible rapidement par MSN ? Je vous ferai parvenir mon adresse. Merci d’avance

    • Le 20 septembre 2008 à 12:07, par Seb. En réponse à : Problème erreurs 404 !

      Je pense avoir résolu mon problème, pour ceux que ça intéresse :

      Dans le fichier propres-arbo.php puis dans la fonction recuperer_parametres_url() ; à la ligne 341 (par là) il y a écrit « $url = substr($url, strrpos($url, ’/’) + 1) ; » mais la fonction strrpos() ; a pour effet de récupérer la position de la dernière occurence du caractère spécifié (ici le slash).

      Du coup, en testant, les url propres stockées dans la BDD étaient de la forme « rubrique/sous-rubrique/titre-article » or la fonction strrpos() ; faisait récupérer uniquement « titre-article » et donc quand on compare les deux chaines elles ne sont pas égales donc hop erreur 404 !

      J’ai résolu le problème en modifiant la ligne en question par « $url = substr($url, stripos($url, ’/’) + 1) ; » donc en utilisant stripos() ; à la place de strrpos() ; qui a pour effet de donner la position de la PREMIERE occurence du slash.

      Voilà, tout semble ainsi fonctionner. S’agissait-il d’une erreur de votre part ou était-ce voulu pour une raison qui m’a échappé ? Merci.

    • Le 6 octobre 2008 à 09:49, par Jo En réponse à : Problème erreurs 404 !

      Salut,

      Merci pour ta proposition, j’ai testé mais j’ai l’impression que la pagination dans les article ne prend pas en compte les modifications... Il s’agit bien de propres-arbo.php qui se trouve dans ecrire/urls/ ?car j’ai j’ai la modif mais aucun effet ..

      merci d’avance

      Jo

    • Le 6 octobre 2008 à 09:54, par Jo En réponse à : Problème erreurs 404 !

      Oups stripos est valable juste en php5 ... Y’aurai -t-il une altérnative ?

    • Le 6 octobre 2008 à 10:37, par ? En réponse à : Problème erreurs 404 !

      J’ai résolu le probleme de STRIPOS mais bizarre .. dans les pages articles ca ne fonctionne toujours pas...

    • Le 9 octobre 2008 à 09:59, par Seb En réponse à : Problème erreurs 404 !

      Personnellement, je n’ai pas de pagination dans mes pages d’articles, juste dans les pages de rubriques et ça marche très bien. Par contre j’ai « article suivant | article précédent » et pour éviter tout problème je passe mes liens en URL absolue dans mes boucles (je n’aime pas la balise <base />) dans le style # URL_SITE_SPIP/mon-repertoire/mon-sous-repertoire/# URL_ARTICLE mais bien sûr ceci est un exemple exagéré volontairement. Si tu es comme moi chez OVH, il est très simple de passer en PHP5 via un fichier .htaccess (cf la doc de OVH).

      Petite démo pour ceux qui veulent vérifier que tout fonctionne bien chez-moi : c’est par ici !

    • Le 9 octobre 2008 à 10:01, par Seb En réponse à : Problème erreurs 404 !

      Dernière chose : installe (si ce n’est pas déjà fait) et utilise le plugin effacer url propres, puis vide le cache plusieurs fois pour être bien sûr, ensuite je ne sais pas trop comment c’est calculé mais il faut visiblement un certain temps avant que les nouvelles URL soient effectives après avoir vidé le cache.

    Répondre à ce message

  • Le 14 septembre 2008 à 20:49, par ? En réponse à : URL propres en arborescence virtuelle

    Bonjour

    Je viens de faire toute la manip, tout est OK.. mais la pagination ne fonctionne que dans les pages « rubrique », quand je clique sur un article et que je veuille laginer les autres articles, ca ne marche pas... avez vous déjà eu ce genre de probleme ?

    Répondre à ce message

  • Le 5 mai 2008 à 18:01, par sipo En réponse à : URL propres en arborescence virtuelle

    Bonjour,

    En local (WAMP) tout fonctionne très bien avec .htaccess.
    Mais chez mon hébergeur (OVH), en utilisant le .htaccess, la redirection ne marche pas pour les articles et les rubrique (ça marche tout de même dans les autres cas !). J’ai décommenté RewriteBase / comme c’est expliqué ici : http://guide.ovh.com/HtaccessModRewrite.

    J’ai contourné le problème en utilisant le fichier php qui gère l’erreur 404, mais apparemment dans ce cas les entêtes HTML (POST) sont perdus !

    Quelqu’un a déjà eu le même problème ? Une solution pour faire fonctionner correctement .htaccess chez OVH ou de de préserver les entêtes POST avec la redirection 404 ?

    Merci d’avance.

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Metas +

    3 décembre – commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Import ICS 2 (agenda distant)

    2 août – 35 commentaires

    La version 2 du plugin « import ICS » en reprend la principale fonctionnalité, à savoir l’ajout automatique d’évènements distants dans la liste des évènements d’un site. À la différence de la première version, elle ne dépend pas du plugin « Séminaire » et est (...)

  • Newsletters

    16 janvier 2013 – 374 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • CKeditor 3.0

    4 octobre 2009 – 1217 commentaires

    CKeditor est l’évolution de l’éditeur WYSIWYG : FCKeditor, avec ce plugin vous pourrez utiliser cet éditeur à la place de l’éditeur de spip tout en laissant le choix à vos auteurs de l’éditeur qu’ils préfèrent utiliser. Attention : cet éditeur WYSIWYG (...)

  • GIS 4

    11 août 2012 – 1284 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

Ça spipe par là