Page 1 sur 2
Redirection RewriteRule et SPIP
Publié : 28 déc. 2004, 15:15
par Ezor
Serait-il indiscret de savoir le contenu de votre htaccess (
http://www.geckozone.org) qui permet la redirection à la volée des url de type "rubriques/1-marubrique/" en "rubrique.php3?id_rubrique=1" ?
J'ai eu beau lire différents sites qui explique les RewriteRule, je m'emmelle les pinceaux et je n'arrive pas à obtenir ce résultat.
Dans tout les cas, bravo pour ce site et ce forum que je découvre avec plaisir depuis quelques jours.
Publié : 28 déc. 2004, 15:19
par ClémentD
Une petit guide sur les rewrite est diponible dans le manuel de SPIP,
http://www.spip.net/fr_article765.html .
Mais en effet il semble que ce ne sont pas lesmême règles que celles utilisées ici.
Publié : 28 déc. 2004, 15:30
par Ezor
Effectivement, c'est celle que j'utilise actuellement et par un soucis de propreté, j'aurais désiré mettre en place le même type de redirection que le site geckozone!
Publié : 28 déc. 2004, 15:32
par ClémentD
T'as plus qu'a attendre que les admins passent par ici alors

Publié : 28 déc. 2004, 15:38
par Ezor
Et bien je vais attendre

Publié : 28 déc. 2004, 17:54
par Benoit
C'est Olivier (olab) qui s'est occupé de ça, et il est en vacances pour l'instant.
Tout ce que je peux dire c'est que, au cas où vous ne l'aviez pas vu, c'est basé sur le début (rubriques/1) et qu'après on peut écrire à peu près n'importe quoi, ça sera bien redirigé à cause du 1 qui renverra vers id_rubrique=1.
Publié : 29 déc. 2004, 09:52
par Ezor
Oui j'avais vu d'ailleur, j'avais déjà reproduit cette construction d'url en modifiant le fichier "inc-url-propre.php3", mais quand j'ai voulu faire les redirections par le biais du fichier ".htaccess", et bien là ce fut le drame ....

Publié : 05 janv. 2005, 16:41
par olab
Coucou, de retour de vacances, je peux enfin te répondre

Voici donc les règles du mod_rewrite :
Code : Tout sélectionner
# Corrections (notamment pour que les images passent)
RewriteRule ^(.*)/(IMG|squelettes|ecrire)/(.*)$ /$2/$3 [R=301,QSA,L]
RewriteRule ^(.*)/(spip_barre\.js|puce\.gif|puce_rtl\.gif)$ /$2 [R=301,QSA,L]
# Comme ces premieres regles contiennent des {articles,actualites} il faut les placer en premier
RewriteRule ^articles/xml/([0-9]*)(-(.*))?$ backend.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^articles/atom/([0-9]*)(-(.*))?$ backend_atom.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^articles/js/([0-9]*)(-(.*))?$ distrib_articles.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^actualites/xml/([0-9]*)(-(.*))?$ backend-breves.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^actualites/atom/([0-9]*)(-(.*))?$ backend-breves_atom.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^actualites/js/([0-9]*)(-(.*))?$ distrib_breves.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^articles/((19|20)[0-9]{2}/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/)?([0-9]+)(-(.*))?$ article.php3?id_article=$5 [QSA,L]
RewriteRule ^actualites/((19|20)[0-9]{2}/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])/)?([0-9]+)(-(.*))?$ breve.php3?id_breve=$5 [QSA,L]
RewriteRule ^rubriques/([0-9]+)(-[^/]*)?/$ rubrique.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^auteurs/([0-9]+)(-(.*))?$ auteur.php3?id_auteur=$1 [QSA,L]
RewriteRule ^auteurs/$ auteur.php3 [QSA,L]
RewriteRule ^contributeurs/([0-9]+)(-(.*))?$ contributeur.php3?id_auteur=$1 [QSA,L]
RewriteRule ^contributeurs/$ contributeur.php3 [QSA,L]
RewriteRule ^forums/([0-9]+)(-(.*))?$ forum.php3?id_forum=$1 [QSA,L]
RewriteRule ^plan/$ plan.php3 [QSA,L]
RewriteRule ^syndication/$ syndication.php3 [QSA,L]
RewriteRule ^js/([0-9]*)(-(.*))?$ distrib.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^xml/([0-9]*)(-(.*))?$ backend_tout.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^atom/([0-9]*)(-(.*))?$ backend_tout_atom.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^rubriques/$ plan.php3 [QSA,L]
RewriteRule ^articles/$ site_articles.php3 [QSA,L]
RewriteRule ^actualites/$ site_breves.php3 [QSA,L]
RewriteRule ^rubriques/([0-9]+)(-[^/]*)?/articles/$ rubrique_articles.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^rubriques/([0-9]+)(-[^/]*)?/actualites/$ rubrique_breves.php3?id_rubrique=$1 [QSA,L]
RewriteRule ^profils/([0-9]*)(-(.*))?$ profil.php3?id_mot=$1 [QSA,L]
RewriteRule ^apropos/$ apropos.php3 [QSA,L]
RewriteRule ^coingeckozone/$ coin_geckozone.php3 [QSA,L]
RewriteRule ^coingeckozone/ressources/(.*)$ ressources/$1 [QSA,L]
RewriteRule ^telechargement/$ telechargement.php3 [QSA,L]
RewriteRule ^aide/$ aide.php3 [QSA,L]
Bien sûr il faut que la génération des urls via le inc-urls soit correcte, sinon...
Edit: j'ai rajouté les exceptions au début

Publié : 10 janv. 2005, 13:56
par Ezor
Merci énormément !
Publié : 10 janv. 2005, 14:12
par olab
Good luck

Publié : 10 janv. 2005, 16:41
par Ezor
Alors pour ce qui est de générer des urls correctes via le inc-url, ca va j'ai réussi. Donc là je test avec un article, impec, il me redirige vers le bon article.
Un seul problème, l'adresse étant:
Je n'ai nis le CSS ni les images qui apparaissent.
Normal, d'après l'adresse je suis dans le répertoire articles/2005/....
Donc quand je veux afficher l'image: "images/monimage.jpg" il va chercher dans /articles/2005/01/07/419-Blabla/images/monimages.jpg", du moins je le suppose...
Il faudrait donc que je mette "
http://monsite/css/moncss.css" et la même syntaxe pour les images dans les SRC.
Premièrement ca ne m'arrange pas trop et deuxièmement j'ai vu que ce n'était pas le cas sur le site de geckozone.
Il y a une astuce ?
PS: je suis sur que c'est très con, c'est la fin de journée....
Publié : 10 janv. 2005, 16:53
par olab
Tututu, pas la peine de te rabaisser, c'est moi qui ne t'ai pas tout donné

Mets ça au debut de l'htaccess et ça devrait aller
Code : Tout sélectionner
# Corrections (notamment pour que les images passent)
RewriteRule ^(.*)/(IMG|squelettes|ecrire)/(.*)$ /$2/$3 [R=301,QSA,L]
RewriteRule ^(.*)/(spip_barre\.js|puce\.gif|puce_rtl\.gif)$ /$2 [R=301,QSA,L]
Publié : 10 janv. 2005, 17:01
par Ezor
Merci, au passage je viens de voir qu'en mettant...
...au lieu de...
...ca resolvait le problème!
Publié : 10 janv. 2005, 17:07
par olab
oui forcément
et où c'est-y qu'on peut voir tout ça ?

Publié : 10 janv. 2005, 17:10
par Ezor
Ah ... j'aime partager mon travail d'habitude, mais là je suis désolé, c'est l'intranet de mon entreprise
Edit: mais je compte me mettre à faire un site perso prochainement et je reprendrais toutes les bonnes idées que j'ai pu voir sur geckozone
