URL propres en arborescence virtuelle

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 :

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 :

<?php

	function url_a_la_racine ( $url ) {
		if ( $url == '' )
			return '';
		
		$racine = $GLOBALS['meta']['adresse_site'];
		$suffixe = preg_replace(',^.*(ecrire/|spip.php)?([^/]*)$,U', "\\1\\2", $url);
		
		return "$racine/$suffixe";
	}

?>

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

<link rel='stylesheet' href='".url_absolue(find_in_path('spip_admin.css'))

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

<link rel='stylesheet' href='".find_in_path('spip_admin.css')

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.

Discussion

36 discussions

  • 12

    bonjour
    je trouve pas le fichier mes-fonctions.php et j’oblient erreur404 sur toutes les articles et les rubriques avec ce contrib.

    www.colazen.com c’est le site en question

    Merci de votre aide.

    • assure toi de mettre la balise base href dans ton head,

      je viens d’y jeter un oeil et ce n’est pas present sur ton site.

      @+

    • je viens de l’ajouter, mais ca change rien, j’ai toujours des erreurs 404 sur tous les articles et les runriques ...

    • ok,

      je pense avoir trouvé ton erreur.

      Peux tu virer la ligne RewriteBase /spip/ dans ton .htaccess et relance apache .

      Ca devrais réglé le problem.

      Si tu lis un peux plus bas j’avais déja fais part de ce petit probleme.

      En espérant que ca puisse t’aider.

      @+

    • c’est fait, mais de nouveau ca marche pas
      c’est ma 4e journée avec ce problème et je me demande vraiment ce qui est va pas.

      Merci d’avance

    • Le base href doit etre present sur tout tes squelettes.

      Je viens de voir cette page : http://www.colazen.com/sss/ et la base href n’apparait pas .

      Je vois k’on avance bien car la le squelette commence a s’afficher :)

      Encore un effort :)

      @+

    • tient voila mon msn, je vx bien qu’on parle en ligne
      mr-l_impossible@hotmail.com

      Merci de m’ajouter

    • En ce qui me concerne cela ne vient pas du .htacces car j’ai fait un test avec :

      http://site/test.html qui correspond à http://site/test.php et cela fonctionne.

      Il y a donc bien un pb avec le base href.

      J’ai bien mis cette balise dans style.html du squelette alternatives, et elle apparait dans le code source du navigateur.

      J’avoue que je sèche.

      Si une bonne âme peut m’aiguiller je l’en remercie.

    • Boris Lechner

      Oulah, ne mélangez pas tout.

      Je viens de passer sur votre site, et votre problème est clairement un problème de redirection.
      Utilisez-vous la méthode par le ModRewrite ou par le fichier .htaccess ?

      Pour info, un problème de balise « base href » ne vous empêcherait pas de naviguer dans le site depuis la page d’accueil.

    • Bonjour Boris,

      Tout merci pour cette contribution.

      J’utilise le .htaccess comme dit dans les posts précédents.

    • Boris Lechner

      Ok. Où avez vous rangé le fichier spip-rewrite-with-404.php ?

      Quand j’essaie http://www.plafond-ile-de-france.fr/spip-rewrite-with-404.php j’obtiens une erreur 404, ce qui signifie qu’il n’est pas à la racine du site, alors qu’il devrait y être si vous n’avez pas modifié le contenu du fichier .htaccess

    • Oups là ... je crois que l’on s’est mal compris Boris, méa culpa.

      J’utilise le .htacces du mod_rewrite, autant pour moi.

      Et en plus je me suis trompée de post, c’était celui avec le squelette alternative, je comprends pourquoi vous avez du mal à vous y retrouver.

    • En effet, la méthode ErrorDocument fonctionne. Je garderais donc celle là.

      Merci Middir et Boris pour votre aide.

    Répondre à ce message

  • 3

    pr moi ca marche pas de tt
    il me donne error404 a chaque que je sélectionne une rubrique ou bien un article ... ;

    • Salut,

      peux tu donner plus d’indications sur ton probleme ?

      je serai ravi de t’aider :)

      Aussi si quelqu’un a une solution a mon probleme :

      Mon fill rss ne marche plus lorsque j’utilise cette facon de réecriture. Es ce que quelqu’un a eu le meme probleme et a réussi a réparé ?

      Dans l’attende de vous lire,

      Amicalement,

      middir

    • voila mon site qui est en realistion : http://www.colazen.com/
      le problème c que rien ne marche quand j’ai fait ce contrib ...

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

      je le trouve pas ce fichier moi, il est où ?

    Répondre à ce message

  • 1

    Tout d’abord bravo à l’auteur pour ce plugin très utile,

    J’ai suivi les instructions à la lettre (enfin je le pense), l’arborescence fonctionne bien quand on cible un article ou une rubrique.
    Par contre, dès qu’il s’agit de cibler une page relative à l’auteur ou au plan du site, au forum, au rss, etc.
    Je tombe systèmatiquement sur le message « Not Found, The requested URL was not found on this server ».

    Pour être un peu plus clair ; le lien « Répondre à cet article » cible l’adresse
    http://monsite.com/spip/Francais/Sous-rubrique/spip.php?page=forum&id_article=3
    Page qui n’existe pas evidemment...

    En premier temps je pensais que le problème venait d’une mauvaise implantation de la balise <base href>, mais vu que les liens entre articles et rubriques fonctionnent, j’avoue être assez confus !

    Si quelqu’un à une idée ?

    • Pour ma part j’ai un peu bidouiller pour avoir le forum .

      Tu devrai essayer de mettre les liens vers le frum en dur dans ta page .

      Je reste a disposition si je peux t’aider.

      @+

    Répondre à ce message

  • 4

    Et alors donc (parce que j’ai toujours des problèmes moi...) comment je peux faire pour récupérer l’URL normale (spip), dans le cas d’un lien permettant de changer de langue ?

    Parce que là, il me fait des http://www.site.com/rubrique/article.html?lang=fr
    et forcément... ça marche pô.

    Je suppose (seulement) que ça vient du format de l’url... mais pas sûr, ça se trouve, je me viande totalement dans mon code pour changer la langue !

    • ou plus simplement... comment faire le chemin inverse pour que les variables d’url lang passent ?

    • Bon alors déjà, je ne m’y prenais pas comme il faut pour le site multilingue...
      Maintenant tout est bon, mais il subsiste une bizarrerie.

      J’affiche #MENU_LANG et une fois sorti de la page d’accueil, l’url générée par ce menu n’est pas la bonne puisqu’au lieu de revenir à la racine, il se place dans la rubrique en cours (via les urls propres).
      Plus étonnant, /rubrique/article.html&lang=en affiche une belle erreur 404 alors que l’article est traduit. Evidemment puisqu’il s’attend à une version anglaise de l’url, qui elle fonctionne très bien...

      Est-ce que je dois aussi traduire les urls propres ???

    • Vincent

      Bonjour Valentin,

      as tu réussi à corriger le problème avec lang=en ?

      j’ai le même souci

      merci

      Vincent

    • Valentin

      Non pas encore, j’ai mis de côté la traduction... trop de problèmes avec les urls propres et avec certains plugins. C’est un souci pour moi car je ne suis pas développeur et au bout d’un moment ça dépasse mon champ de compétences.

    Répondre à ce message

  • 1

    Ce plug-in ne semble pas compatible avec la découpe d’article.

    Comment est-ce qu’on peut empêcher la réécriture pour une URL ?

    • J’ai peut-être trouvé...

      J’ai remarqué que l’url des liens suivant / précédent revient à la racine.
      Au lieu d’avoir http://www.site.com/rubrique/article.html&artpage=2, on a en réalité http://www.site.com/article.html&artpage=2

      La page n’existe donc pas... normal quoi.
      Mais après... on fait comment pour rétablir ça ?

    Répondre à ce message

  • 1

    Tout d’abord merci pour cette superbe contrib qui améliore considérablement le référencement et rend facile la lecture pour les utilisateurs.

    Je rencontre un problème qui n’a pas été soulevé... ou presque.

    J’ai appliqué la contrib à la virgule près, en mentionnant bien le base href, en utilisant mod_rewrite.
    J’obtiens invariablement des erreurs 404 sur l’ensemble du site (rubriques, articles, etc.). J’ai suivi les conseils donnés, vidé le cache, effacé les urls propres... rien n’y fait.

    L’erreur est générée par apache et il semble ne pas trouver le fichier /spip/spip.php, ce qui est incohérent car je n’ai pas de sous-dossier /spip/

    merci pour l’aide !

    • Oui bon ok ;-)

      J’ai commenté la ligne RewriteBase /spip/ du fichier .htaccess

      No comment ! Ca marche d’enfer !!! Génial !!! Merci !!!

    Répondre à ce message

  • 25

    Bonjour,

    Ça a l’air très bien et j’ai très envie d’essayer : il paraît que le référencement est sensiblement amélioré ? J’ai tout de même une question : est-ce que ce mode de ré-écriture est compatible (pris en compte) par le plugin sitemap ?

    cordial,
    cb.

    • Bon, je viens d’essayer : ça ne marche pas :
      -  les articles ne changent pas d’URL (même après réinitialisation par le plugin)
      -  Les reubriques sont en Erreur 404

      Une idée ?

      cb.

    • Boris Lechner

      Bonjour, concernant le référencement, je ne sais pas si c’est encore d’actualité : les moteurs de recherche s’améliorent de plus en plus. Mais en tout cas, les urls sont plus compréhensibles par les humains, et collent plus aux standards du web.

      Je ne connais pas le plugin sitemap, mais si celui-ci fonctionne avec les urls propres de standards de spip (et je présume fortement que ce soit le cas), cela fonctionnera avec celles-ci.

    • Boris Lechner

      Bon, je viens d’essayer : ça ne marche pas :
      les articles ne changent pas d’URL (même après réinitialisation par le plugin)
      Les reubriques sont en Erreur 404
      Une idée ?
      cb.

      Je viens de passer sur votre site, il semblerait que vous ayez avancé depuis le message. Les rubriques et articles fonctionnent, les urls sont propres. Il vous reste à ajouter le <base href> pour que la feuille de style soit à nouveau appliquée.

    • Oui merci, c’est presque bon : il y a un détail encore : je ne comprends pas pourquoi les url propres des sites référencés et des mots clés sont générées avec des numéros : j’ai bidouillé avec les mots clés (non recalcul des propres2), mais avec les sites, ça donne parexemple :

      http://www.eros-thanatos.com/@site9@.html

      au lieu du nom du site dans l’url.

      Une idée là-dessus ?

      merci encore, c’est très bon cette arborescence virtuelle.

      cb.

    • Oui merci, c’est presque bon : il y a un détail encore : je ne comprends pas pourquoi les url propres des sites référencés et des mots clés sont générées avec des numéros : j’ai bidouillé avec les mots clés (non recalcul des propres2), mais avec les sites, ça donne parexemple :
      http://www.eros-thanatos.com/@site9@.html
      au lieu du nom du site dans l’url.
      Une idée là-dessus ?

      Ouaoutch ! Merci à toi, tu viens de débusquer un splendide bug affectant les auteurs, les sites et les mots-clés...
      Le bug concernait la version 1.5, et la 1.6 (déjà en ligne !) le corrige.

      Procédure de mise à jour :

      Remplacer le fichier monDossierSpip/ecrire/urls/propres-arbo.php par le fichier propres-arbo.php contenu dans l’archive url-propres-arbo-v1.6.zip.
      Attention, si la taille des urls avait été personnalisée, il faut penser à replacer ces réglages dans le nouveau fichier.

    • Ah ! Ok !

      Bon mais pour l’instant je suis revenu aux urls propre2, sinon je perds mes 1000 visites d’un coup en attendant les prochains passages des bots. Comme Google me met dans la sandbox régulièrement, je profiterai d’un tour dans le bac à sable pour changer les urls propres en arborescence virtuelle.

      Merci à toi, ça faisait longtemps que j’attendai de tels scripts, qui avaient toujours plus ou moins échoués jusqu’à présent (ou disons qui ressemblaient plus à du bidouillage — opinion perso !).

      @+, cb.

    • A l’ aide, j’ ai suivi à la lettre le consigne, en local ca marche bien mais une fois sur le serveur ca veut pas, il me montre Erreur 404 . Le serveur supporte pourtant l’ urlpropres2

    • Boris Lechner

      A l’ aide, j’ ai suivi à la lettre le consigne, en local ca marche bien mais une fois sur le serveur ca veut pas, il me montre Erreur 404 . Le serveur supporte pourtant l’ urlpropres2

      Si vous avez utilisé à un moment ou un autre les urlpropres2, il faut utiliser le plugin « Effacer url propres » pour remettre à zéro toutes les urls propres. L’avez-vous fait ?

    • Boul25

      Bjr,

      Oui, j’ ai aussi effacer l’ url propre, et en local ca marche bien

      En ligne, lorsque on clique sur un lien www.monsite/le-titre-rubrique.html, le serveur n’ arrive pas à associer à quel numéro rubrique cela correspond. voila mon observation toute la nuit

    • Bjr,
      Oui, j’ ai aussi effacer l’ url propre, et en local ca marche bien
      En ligne, lorsque on clique sur un lien www.monsite/le-titre-rubrique.html, le serveur n’ arrive pas à associer à quel numéro rubrique cela correspond. voila mon observation toute la nuit

      Si vous avez bien effacé toutes les urls propres et vidé le cache et que ça ne fonctionne toujours pas, ça peut être un problème de redirection. Quelle méthode utilisez-vous ? Le mod-rewrite ou la directive ErrorDocument ? Qu’obtenez-vous comme page d’erreur ? Une erreur 404 générée par Apache ou par Spip ? Et quelle version de Spip utilisez-vous ?

    • Bjr,
      Oui, j’ ai aussi effacer l’ url propre, et en local ca marche bien
      En ligne, lorsque on clique sur un lien www.monsite/le-titre-rubrique.html, le serveur n’ arrive pas à associer à quel numéro rubrique cela correspond. voila mon observation toute la nuit

      En essayant diverses choses, j’ai trouvé un nouveau bug, ne concernant que les personnes utilisant la redirection par ErrorDocument. La variable $this->installdir doit être positionnée à « ,^/, » ou « ,^/dossier/install/spip/, ». En bref, il faut simplement ajouter le caractère ^ après la première virgule.
      L’article est modifié, ainsi que le fichier de l’archive, ce qui nous donne la version 1.8 !

    • boul25

      J’ utilise la version 1.9.2 de SPIP, la toute dernière je crois. J’ utilise le mode rewrite.

      En gros mon promblème est que www.monsite.com/titre-rubrique/mon-article.html (qui équivaut en réalité à www.monsite.com/spip.php?article15 ) il reconnait pas quel est le numéro de l’ article, et aucune boucle n’ est exectuer. ( il ne s’ agit plus d’ Erreur 404, mais un problème de passage de variable je penses car il associe bien l’ url arbo aux fichier article.html du squelette mais c’est le passage de la valeur qui passe pas)

    • j’ai également un problème concernant le passage de variable. Mais pour moi cela concerne les rubriques. Par exemple lorsque je clique sur une rubrique dont l’adresse est : « http://localhost/l-art-de-vivre/l-art », il me met une page 404 et il me rajoute l’adresse suivante à la barre à la barre d’adresse : « http://localhost/l-art-de-vivre/l-art/l-art-de-vivre/l-art » .
      Sinon j’utilise le mod-rewrite avec htaccess. J’ai également essayé avec la redirection errorDocument mais j’ai la même erreur.

    • Boris Lechner

      J’ utilise la version 1.9.2 de SPIP, la toute dernière je crois. J’ utilise le mode rewrite.
      En gros mon promblème est que www.monsite.com/titre-rubrique/mon-article.html (qui équivaut en réalité à www.monsite.com/spip.php ?article15 ) il reconnait pas quel est le numéro de l’ article, et aucune boucle n’ est exectuer. ( il ne s’ agit plus d’ Erreur 404, mais un problème de passage de variable je penses car il associe bien l’ url arbo aux fichier article.html du squelette mais c’est le passage de la valeur qui passe (...)

      Ok, vous avez bien vu mon message précédant et appliqué la correction nécessaire ? Parceque les symptômes me laissent penser le contraire.

    • Boris Lechner

      j’ai également un problème concernant le passage de variable. Mais pour moi cela concerne les rubriques. Par exemple lorsque je clique sur une rubrique dont l’adresse est : « http://localhost/l-art-de-vivre/l-art », il me met une page 404 et il me rajoute l’adresse suivante à la barre à la barre d’adresse : « http://localhost/l-art-de-vivre/l-art/l-art-de-vivre/l-art » . Sinon j’utilise le mod-rewrite avec htaccess. J’ai également essayé avec la redirection errorDocument mais j’ai la même (...)

      Là c’est clair, vous n’avez pas positionné le <base href=...> dans vos squelettes.
      Je vous invite à revoir le paragraphe « Modifications à apporter à vos squelettes ».

      N’oubliez pas ensuite de vider le cache !

    • J’ai toujours pas résolu mon probleme d’url. En effet, j’ai installé mon spip dans un répertoire dont le chemin est (racine>art>art-metier) et dans mon fichier head j’ai mis la ligne <base href="#URL_SITE_SPIP"> et dans le fichier .htaccess la ligne RewriteBase /art/art-metier/.
      Est ce bien cela ?

    • J’ai toujours pas résolu mon probleme d’url. En effet, j’ai installé mon spip dans un répertoire dont le chemin est (racine>art>art-metier) et dans mon fichier head j’ai mis la ligne et dans le fichier .htaccess la ligne RewriteBase /art/art-metier/. Est ce bien cela ?

      Alors, si je saisis bien, pour accéder à votre site spip, vous devez saisir l’adresse http://votreSite.exemple/art/art-metier/. Si c’est bien cela, votre configuration semble ok. Reste à vérifier ce que #URL_SITE_SPIP donne chez vous. En principe, ça devrait être http://votreSite.exemple/art/art-metier/ aussi. si ça n’est pas le cas, vous avez trouvé la source de vos problèmes !

    • Boul25

      euhh, explique moi un peu plus svp, votre message indique le bug pour l’ utilisation du script Errodocument, moi j ’utilise le mod-rewrite de Apache..., quel fichier modifier ?

      Merci encore

    • Au fait il y’a une chose très importante que j’ai oublié de préciser. J’ai constaté que ça marche pour mes articles. Le problème apparait que quand je clique sur une rubrique sachant que sur le squelette de mes rubriques (rubrique.html) je fais une redirection sur un article. Le problème est donc le suivant : quand je clique par exemple sur une rubrique nommé art/metier, il m’affiche une page 404 en me disant qu’il ne trouve pas l’article nommé art/metier/art/metier/artisanat.html (redirection vers l’article artisanat.html). par la suite il m’a rajouté le chemin (art/metier/artisanat.html) de l’article en plus du chemin de la rubrique (art/metier/) au lieu de m’afficher tout simplement art/metier/artisanat.html.

      J’espère que j’ai été assez clair. Merci

    • Boris Lechner

      Au fait il y’a une chose très importante que j’ai oublié de préciser. J’ai constaté que ça marche pour mes articles. Le problème apparait que quand je clique sur une rubrique sachant que sur le squelette de mes rubriques (rubrique.html) je fais une redirection sur un article. Le problème est donc le suivant : quand je clique par exemple sur une rubrique nommé art/metier, il m’affiche une page 404 en me disant qu’il ne trouve pas l’article nommé art/metier/art/metier/artisanat.html (redirection vers l’article artisanat.html). par la suite il m’a rajouté le chemin (art/metier/artisanat.html) de (...)

      J’insiste sur le <base HREF...>. Si celui-ci est bien en place, c’est un problème lié à votre manière de rediriger, dont j’ignore tout.

    • Pourtant j’arrive bien à voir les articles et aussi j’ai bien mis <base href=#URL_SITE_SPIP avec #URL_SITE_SPIP qui me donne bien l’adresse de mon site. Sinon concernant la redirection que j’ai fait dans le squelette rubrique.html, j’ai mis une boucle qui me dis qu’a chaque foi que je clique sur une rubrique, je me redirige (

      <? header("Location: #URL_ARTICLE"); ?>

      ) vers un article ayant un mot clé donné (que j’ai définit lors de sa création) (j’utilise le plugin squelette par mot clé).

      En fait, je sais pas, si j’avais fait une erreur sur <base href="..> j’aurais peut être la même erreur en essayant d’afficher un article ou que le système ne trouverais pas mes fichiers css. mais bon peut être qu’il y’a quelque chose qui m’échappe je vais essayer de creuser encore.

    • Boris Lechner

      Pourtant j’arrive bien à voir les articles et aussi j’ai bien mis ) vers un article ayant un mot clé donné (que j’ai définit lors de sa création) (j’utilise le plugin squelette par mot clé).
      En fait, je sais pas, si j’avais fait une erreur sur j’aurais peut être la même erreur en essayant d’afficher un article ou que le système ne trouverais pas mes fichiers css. mais bon peut être qu’il y’a quelque chose qui m’échappe je vais essayer de creuser encore.

      Ok, j’ai compris le problème. C’est bien la redirection. Comme la redirection se fait par une adresse virtuelle http://site.exemple/nomRubrique/ et que #URL_ARTICLE donne une URL relative (du style nomRubrique/titreArticle.html), vous êtes très logiquement redirigé vers http://site.exemple/nomRubrique/nomRubrique/titreArticle.html.

      La solution est simple et consiste à modifier votre <? header("Location: #URL_ARTICLE"); ?> en <? header("Location: (#URL_ARTICLE|url_absolue)"); ?>

    • Merci ça marche par contre j’ai mis

      <? header("Location:[(#URL_SITE_SPIP)][(#URL_ARTICLE)]");?>

      au lieu de

      <? header("Location:[(#URL_ARTICLE|url_absolue)]");?>

      .

    • Je rencontre le même probleme. C’est à dire les url s’affichent dans la barre d’adresse mais aucune boucle n’est exécutée.
      Si quelqu’un peut nous aider qu’il nhésite pas.

    • Agent A Gadge

      Bonjour, votre patch a l’air bien cependant, je bloque. J’utilise la version 1.9.2b de SPIP et je n’arrive pas a trouver le fichier mes_option.php

      Je ne sais pas pourquoi. Si quelqu’un a la réponse. Merci D’avance

    Répondre à ce message

  • 1
    Nicolas

    Bonjour

    J’ai installé ce système, qui semble fonctionner.

    Par contre, j’aurai aimé garder les anciennes url de rubriques.
    Par exemple : « Les actualités » a comme url « /_actualites/ ».

    J’ai modifié l’url dans la base de donnée, mais, lorsqu’il construit l’url de l’article, il semble recalculer l’url sans tenir compte de l’url de la rubrique.
    Ce qui donne : /les-actualites/mon-article.html
    (j’aurai bien aimé : /_actualites/mon-article.html)

    Il faut que je modifie le script ?

    Répondre à ce message

  • 1

    Salut Boris,

    Tout d’abord bravo et merci enormement de cette contrib :)

    Je l’ai testé et je n’ai pas eu besoin de faire appel a Jack :D

    Par contre j’ai un petit soucis concernant un formulaire intégré a mon squelette.

    En effet toutes mes conditions ne semble pas marcher avec ta methode de reecriture... J’ai l’impression que quand je lance le formulaire il ne fait que se réafficher et ne prend pas en compte de tout mon code php.

    As tu une idée de ce qui peut me bloquer ?? Pour info sur d’autre site je faisais la meme chose avec les urls propres et cela marche trés bien .

    Merci encore de ton aide,

    J’attend de te lire,

    Cdlt,

    middir

    • Je me réponds,

      Je viens de m’appercevoir que dans le .htaccess la ligne suivante n’était pas commentée par defaut :

      RewriteBase /spip/

      Pour ma part le site est a la racine du serveur et non pas dans un dossier SPIP, faudrai peut etre le mettre en comment par defaut , qu’en penses tu Boris ??

      Je suis sur que ca peut aider pas mal d’entre vous qui ont du avoir des difficultés .

      Je me suis rendu compte de l’erreur dans les logs du serveur voila ce que j’ai récupéré avant rectification du htaccess :

      [Wed Jun 06 21:43:45 2007] [error] [client xxx.xxx.xxx.xxx] File does not exist : /var/www/vhosts/xxxx.COM/httpdocs/spip

      c’est ce qui m’a mis la puce a l’oreille :)

      en espérant que ca pourra aider certain d’entre vous n’hésitez pas a me le faire savoir :)

      c’est peut etre ca qui bloque le bon fonctionnement du plugin forms et table avec cette contrib, a tester :)

      @+

      middir

    Répondre à ce message

  • 3
    Adrien

    Bonjour,

    Lorsque j’ai voulu mettre les urls sur mon site,

    J’ai fait toute les manips qui sont marquées sur l’article, mais j’ai un problème.

    Quand je vais sur n’importe qu’elle page de mon site, j’ai une fenêtre d’alerte qui s’ouvre où il est marqué « Bouton Texte à besoin de jQuery »

    Auriez-vous une solution ?

    P.S. : j’ai utilisé la redirection avec le mod_rewrite.

    • Bonjour,
      Lorsque j’ai voulu mettre les urls sur mon site,
      J’ai fait toute les manips qui sont marquées sur l’article, mais j’ai un problème.
      Quand je vais sur n’importe qu’elle page de mon site, j’ai une fenêtre d’alerte qui s’ouvre où il est marqué « Bouton Texte à besoin de jQuery »
      Auriez-vous une solution ?
      P.S. : j’ai utilisé la redirection avec le mod_rewrite.

      Je ne connais pas ce plugin, mais j’imagine qu’il cherche la bibliothèque jQuery en générant une adresse complète à partir de la page courante. Du coup, il cherche à charger quelque chose du genre http://votresite.exemple/secteur/rubrique/jQuery.js au lieu de http://votresite.exemple/jQuery.js. Il faut donc regarder de ce côté là.

    • Boutonstexte ne cherche rien du tout puisqu’il utilise le jQuery du core.

      Si ce message apparait, c’est que urls-propres-arbo casse ce chargement, ce qui n’est pas étonnant puisque c’est basé sur le répertoire courant ... qui est donc virtuel ici.

      Donc tout plugin ou autre qui utilise jQuery voire d’autres ressources du même type ne fonctionnera pas.

      Par ailleurs, je ne pense pas que la solution soit d’aller « hacker » ce core comme tu le fais déjà, ça rend impossible tout upgrade ou alors il faut tout refaire. Il faudrait voir coté $GLOBALS[’profondeur_url’]

      Enfin, tu aurais tout intérêt à transformer ta contrib en plugin, il n’y aurait alors pas à déplacer des fichiers ou éditer mes_options.php. Voir l’exemple de Urls Libres sur la zone.

      Je trouve tes urls arborescentes très intéressante, à terme, j’aimerais intégrer ça comme option possible dans urls libres qui devrait rassembler tout ce qui existe de manière éparse pour les urls « propres » de manière configurable.

    • Boris Lechner

      Par ailleurs, je ne pense pas que la solution soit d’aller « hacker » ce core comme tu le fais déjà, ça rend impossible tout upgrade ou alors il faut tout refaire. Il faudrait voir coté $GLOBALS[’profondeur_url’]

      J’adhère totalement à cela. Je ne connaissais pas $GLOBALS[’profondeur_url’], mais je m’y pencherai dès que j’en aurai le temps.

      Enfin, tu aurais tout intérêt à transformer ta contrib en plugin, il n’y aurait alors pas à déplacer des fichiers ou éditer mes_options.php. Voir l’exemple de Urls Libres sur la zone.

      Pareil, j’adhère totalement. J’ai vite essayé de regarder comment faire, mais je n’ai pas dû trouver la doc qui va bien, et je manquais de temps pour regarder et comprendre le code d’un plugin.

      Je trouve tes urls arborescentes très intéressante, à terme, j’aimerais intégrer ça comme option possible dans urls libres qui devrait rassembler tout ce qui existe de manière éparse pour les urls « propres » de manière configurable.

      Pas d’objection, votre honneur, si je peux aider, n’hésite pas.

    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