Utilité
Lorsque l’on crée les squelettes d’un site, il arrive que l’on ait des squelettes ne se rapportant à aucun objet éditorial : « galerie.html », « contact.html », « plan.html » etc.
SPIP permet nativement de définir des urls personnalisées pour les pages se rapportant aux objets éditoriaux (articles, rubriques etc.), ce qui exclut ces types de squelettes.
Pour accéder à ces page, on dispose d’une balise #URL_PAGE
, qui produit par défaut une url du type monsite.com/spip.php?page=toto
.
Voyons comment utiliser le plugin pour personnaliser ces urls.
Utilisation
Avant tout, le fichier fichier .htaccess doit être correctement installé à la racine du site.
Rendez-vous sur la page de configuration du plugin ?exec=configurer_urls_pages
ou dans le menu de configuration « Configurez les URLs ».
1. Renseigner les urls personnalisées
Le plugin répertorie tous les squelettes « actifs » identifiés comme étant des pages. Sont donc exclus de la liste les squelettes des objets éditoriaux (article.html, article-10.html etc.), les noisettes (inc-xxx.html) et les squelettes « techniques » (404.html, sommaire.html etc.).
La recherche est effectuée à la racine des dossiers de squelettes et des plugins actifs de catégorie « squelette ».
Si Zpip ou Zcore est actif, c’est dans les sous-répertoires « content » et « contenu ».
Pour chaque page, vous pouvez donc définir une url personnalisée. Une vérification des doublons est effectuée, en revanche la validité de la chaîne rentrée est de votre ressort (attention aux caractères accentués et consorts).
Après enregistrement des paramètres, la balise #URL_PAGE
pointera vers les nouvelles urls pour chaque page concernée.
2. Vérifier RewriteBase
Si nécessaire renseignez le champ « RewriteBase » tel qu’il est défini dans .htaccess. RewriteBase indique le chemin relatif du site sur le serveur si celui-ci est installé dans un sous-répertoire. Il est nécessaire pour le calcul des urls personnalisées par la balise #URL_PAGE
.
3. Modifier le fichier .htaccess
Pour rendre effectives ces nouvelles urls, il ne reste plus qu’à mettre en place la redirection dans le fichier .htaccess : copiez-y le code indiqué en fin de formulaire (la section « réglages personnalisés » est toute indiquée).
Evolution
Toutes les contributions sont les bienvenues, il s’agit d’un premier jet et de nombreuses améliorations sont possibles.
Discussions par date d’activité
21 discussions
Hello,
sur un SPIP 3.1.3 [23214] et un plugin fraichement installé : « URLs Pages Personnalisées » (version : 1.0.7)
Si je clique sur le lien proposé par le plugin j’ai => Accès interdit
Vous n’avez pas le droit d’accéder à la page controler_urls_pages.
et si je me rends sur les onglets je ne vois pas celui de configuration.
Aucun bug à part que rien ne se passe :-p
Me demande si c’est pas un problème de droits ? ...
Amitié
Paulbe
Comme ça, je dirais que la « gestion avancée des URLs » n’est pas activée, dans « Configuration → Configurer les URLs ».
Si c’est bien ça le problème, il faudra que je le rajoute dans la phrase d’explication (et tant qu’à faire, écrire la doc pour cette nouvelle version du plugin.)
Oups en effet, désolé pour le bruit ... je continue ma découverte du plugin.
Merci pour le boulot en tout cas !
Amitié
Paulbe
Si j’ai bien compris cette version du plugin permet de ne pas devoir modifier le htaccess ?
Si oui je constate un truc... mes url de site sont configurées avec .html à la fin, si je mets le lien par exemple
|video|touteslesvideos|../squelettes/video.html|
J’ai maintenant une page avec touteslesvideos mais sans .html à la fin ce qui n’est pas logique avec mes autres URL, j’ai donc tenté avec touteslesvideos.html mais il me crée alors touteslesvideos-html mais toujours sans le .html à la fin...
Suis-je à l’ouest ?
Merci
Paulbe
Oui c’est exact, plus besoin de modifier le htaccess.
Alors je confirme que pour l’instant, on ne peut pas ajouter « .html » à la fin des ces URLs, mais c’est un choix arbitraire et techniquement ça pourrait fonctionner.
En fait je réutilise les vérifications du formulaire d’édition des URLs, qui n’accepte que le format « propre ». Mais pour les URLs des pages, il n’y a pas de raison d’interdire les extensions à la fin effectivement, je rajoute ça dans la todo list.
Merci pour les retours !
Voilà dans la version 1.0.9 c’est possible d’utiliser l’extension .html (version dispo dans la journée)
Répondre à ce message
Est-ce que cela ne vaudrait pas la peine de passer le plugin du statut « experimental » à « en test » ?
Tiens, on a eu la même idée au même moment, ça vient d’être fait.
Répondre à ce message
Hello,
Dans cet article ici http://contrib.spip.net/URLs-pages-personnalisees#s-Utilisation
Les liens ne fonctionnent pas pour moi :
/ ?exec=configurer_urls_pages renvoie Fichier configurer_urls_pages introuvable
et
?exec=configurer_urls ne montre pas la config de ce plugin
Il faut aller dans ?exec=controler_urls (publicaiion > gestion des urls)
sur un SPIP 3.1.3
Bonjour,
Oui la branche 1.x est une refonte complète du plugin, pas mal de choses on changé dont les menus. Il y aura un nouvel article quand j’aurais eu assez de retours.
En attendant, cet article ne concerne que la branche 0.x, je vais rajouter cette précision au début.
Répondre à ce message
Bonjour, sur free j’ai ce message d’erreur dans l’admin :
Bonjour,
quelle est la version de PHP ?
Bonjour,
Mais en fait ce ne serait pas intégré a spip ? Dans configuration > url > gestion avancée
on peut activer l’édition de l’url de chaque objets.
Répondre à ce message
Bonjour,
votre plugin m’intéresse fortement pour ne pas avoir « spip ?page= ».
je me sers des urls propres pour le reste.
Chez moi, le plugin « à l’air de fonctioner » :
« La nouvelle configuration a été enregistrée .
N’oubliez pas de copier le code présent en fin du formulaire dans le fichier .htaccess »
J’ai donc copier le code donné mais lorsque je vais sur mon site, j’ai toujours les pages « mon_site/spip.php ?page=plan » et non juste « mon_site/plan »
Re Bonjour,
maintenant la redirection fonctionne mais la nouvelle page montre ERREUR 404 au lieu de pointer sur ma page.
Je l’ai testé sur « plan » pour avoir mon_site/plan au lieu de mon_site/spip ?page=plan
Bonjour,
Désolé de ne pas avoir répondu à ton premier message.
En ce qui concerne l’erreur 404, dur de déterminer d’où vient l’erreur.
Est-ce que redirection est bien opérationnelle avec les urls persos traditionnelle ?
Peux-tu poster la section de ton .htaccess contenant le code ? (au mieux, toute la section « réglages personnalisés »).
Sinon, la prochaine version devrait éviter d’avoir à toucher au .htaccess, si tu as le courage d’attendre (car je ne sais pas quand ça sortira :p ).
Merci de me répondre,
j’ai collé en fin du .htaccess comme indiqué
La redirection se fait bien sur la barre d’adresse mais apparemment il pointe sur rien puisque j’ai l’erreur 404 (qui apparaît lorsque rubrique vide ou page inconnu)
Répondre à ce message
Hello sur un SPIP 3.0.16 j’ai ceci quand je clique sur les outils pour configurer le plugin
1 Erreur SQL 1052
Column ’actif’ in where clause is ambiguous
SELECT paquets.id_plugin, plugins.id_plugin, plugins.prefixe AS prefixe, plugins.categorie AS categorie, paquets.actif AS actif, paquets.src_archive AS dossier, paquets.constante FROM spip_paquets AS paquets, spip_plugins AS plugins WHERE paquets.id_plugin = plugins.id_plugin AND categorie = « squelette » AND actif = « oui »
2 Erreur SQL 1052
Column ’actif’ in where clause is ambiguous
SELECT paquets.id_plugin, plugins.id_plugin, plugins.prefixe AS prefixe, plugins.categorie AS categorie, paquets.actif AS actif, paquets.src_archive AS dossier, paquets.constante FROM spip_paquets AS paquets, spip_plugins AS plugins WHERE paquets.id_plugin = plugins.id_plugin AND categorie = « outil » AND actif = « oui »
Une idée de solution pour utiliser ce plugin ?
Merci
Paulbe
Bonjour,
merci d’avoir relevé le bug. Peux-tu tester la 0.1.10 qui sera dispo demain et me dire si ça corrige le problème ?
Ca a l’air de passer.
Merci
Répondre à ce message
Bonjour.
Je suis nouveau sous spip, alors je vais peut-être dire des bêtises, mais le plugin ne pourrait-il pas utiliser la table spip_urls pour éviter de devoir ajouter une règle de réécriture à la main dans le .htaccess ?
Je m’explique.
J’ai écrit le squelette ’tutoriel’.
A l’aide du plugin « Menus », j’ai ajouté une entrée vers cette page, qui pointe donc vers http://.../spip.php?page=tutoriel
J’ai activé les urls propres.
A l’aide de votre plugin, je remplace http://.../spip.php?page=tutoriel par http://.../tuto
En rechargeant le site, l’URL dans le menu est bien modifiée, mais pour qu’elle soit comprise par spip, il faut effectivement ajouter la règle de réécriture proposée. Sinon -> Erreur 404, normal.
Donc tout fonctionne pour l’instant.
J’ai ensuite inséré, à la main, une entrée dans la table spip_urls (url=’tuto’, type=’tutoriel’)
(et j’ai desactivé le test dans formulaires_configurer_urls_pages_verifier_dist()).
Du coup, j’ai maintenant l’URL propre qui est bien utilisée dans le menu, et cette URL est comprise par spip (puisqu’elle est définie dans la table spip_urls). Plus besoin de la règle de réécriture...
Est-il donc possible d’implémenter cette méthode (plutôt que l’utilisation d’une règle de réécriture) dans votre plugin ? Ou y a-t-il un effet de bord que je ne connais pas encore ?
En tout cas, merci pour votre travail !
Ah, j’ai oublié... Je suis en SPIP 3.0.16...
Bonjour,
Oui, enregistrer les urls des pages avec celles des objets dans la table
spip_urls
, c’est une piste intéressante. Je vois plusieurs avantages :Après, les urls persos sont censées se référer à des objets éditoriaux. Donc là, on tordrait un peu le cou à ce mécanisme, il faut voir s’il n’y a pas d’effet secondaire.
J’avais entamé une version dev qui fonctionne selon le principe, si ça t’intéresse je pourrai te l’envoyer pour tester. S’il n’y a pas de dommage collatéral constaté, ça pourra être reporté sur le plugin.
Voilà, en tout cas merci pour la suggestion et bonne découverte de SPIP !
Ah oui, au moins en option svp !
Pas de soucis pour tester le plugin de dev, et vu le peu de choses que j’ai pour l’instant (je vérifie juste d’abord que j’ai bien à disposition toutes les fonctionnalités dont j’ai besoin) ça devrait pas créer de gros dommages.
Répondre à ce message
Bon j’ai essayé en SPIP 3.0.16 avec la page recherche.html qui présente les résultats de recherche du formulaire recherche mais sans succès. J’ai pourtant, je crois rien oublié.
Bonjour,
Vous voulez dire que la page « recherche » n’apparaît pas dans la liste des pages détectées, ou que la redirection pour cette page ne fonctionne pas ?
Et est-ce que la redirection fonctionne pour d’autres pages ?
Bonjour,
La page recherche est bien listée mais ça ne fonctionne pas.
Je n’ai pas testé sur d’autres page étant donné que je n’ai que la page recherche qui est détectée.
Répondre à ce message
Bonjour,
sous spip 3 impossible de faire marcher le plugin (voir pièce jointe), c’est ennuyant car ce plugin à l’air vraiment intéressant !
Bonjour,
C’est sans doute que vous n’avez pas le plugin « saisies » d’installé.
Et là c’est ma faute, parce que j’ai omis de le déclarer comme une dépendance nécessaire dans paquet.xml.
D’ailleurs cette dépendance est un peu superflue, je l’enlèverai dans la prochaine mise à jour.
Merci pour le retour !
Merci pour l’indication :) le plugin fonction mieux, cependant à la fin du formulaire je n’ai pas les rewriterules à renseigner dans le fichier htaccess...
Hop, c’est corrigé dans la v0.1.7 qui devrait être dispo demain
Pour les rewriterules, vous avez bien rempli les champs des pages et validé le formulaire ?
Normalement, elles s’affichent une fois les informations enregistrées correctement.
Ah oui ok, merci, les champs préremplis m’ont perturbés !
donc comme je suis une quiche, forcément, les rewrites rules ne sont pas prises en compte dans le htaccess j’ai tjrs mes url type
spip.php ?page=contact
pourtant j’ai bien nommé mon url #URL_PAGEcontact dans le squelette et indiqué
RewriteRule ^spip.php ?page=contact(\.html) ?$ spip.php ?page=contact [QSA,E=url_propre :$0,L]
je n’ai pas renseigné le premier champs car mon spip est à la racine de mon serveur
une solution ?
Bon, finalement, j’ai trouvé moi même d’où venait le problème (c’était moi)
j’ai renseigné tout comme il faut et patatra j’ai des 404 lorsque j’arrive sur mes pages...
Arf, j’avais mal compris le processus de création de l’url... un peu crevé ^^
Sinon bon, mes urls fonctionnent, cependant :
1. lorsque je rentre l’url personnalisée : toto sur un ?page=toto, le front n’agit pas comme je le veux : l’url se présente comme cela monsite.com/toto or je voudrais que ça finisse par .html type monsite.com/toto.html
2. mes urls modifiés je suis content cependant lorsque j’accède à l’url je tombe sur ma 404 page... c’est gênant...
monsite.com/toto.html
, il suffit d’enregistrertoto.html
(au lieu detoto
tout court).Cela dit, je ne l’ai pas précisé dans la doc mais avec les rewriterules indiquées, une url
monsite.com/toto
fonctionne de facto aussi avecmonsite.com/toto.html
.Je ne suis pas sûr que ce fonctionnement est forcément une bonne idée par contre, donc ça pourra changer par la suite.
Répondre à ce message
Bonjour,
j’ai un petit soucis que je n’arrive pas à comprendre. Suite au changement dans le htaccess pour parvenir à la page contact :
RewriteRule ^Contact(\.html) ?$ spip.php ?page=contact [QSA,E=url_propre :$0,L]
j’obtiens une erreur 404. Pourtant l’adresse spip.php ?page=contact est bonne. L’ensemble également correcte. Avez-vous une idée ?
Bonjour,
Il faut peut-être supprimer la majuscule :
RewriteRule ^contact...
Ou mieux :
RewriteRule ^[Cc]ontact
pour accepter « contact » avec et sans majuscule.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 : |