comment ignorer le / final?

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

YvesB
WRInaute impliqué
WRInaute impliqué
 
Messages: 520
Inscription: 11 Jan 2004

comment ignorer le / final?

Message le Sam Fév 18, 2006 14:23

Bonjour,

je souhaites faire passer mes parametres dans des dossiers du style :

www.mondomaine.com/para1/para2/para3/

pour :

www.mondomaine.com/?p1=para1&p2=para2&p3=para4

Mais 2 problemes : Les parametres ne doivent pas etre obligatoires, et le dernier "/" doit pouvoir etre oublié ....

Mon htaccess est comme cela :

RewriteEngine on
RewriteRule ^(.*)?/?(.*)?/?(.*)?/?$ index.php?p1=$0&p2=$1&p3=$2

Merci de votre aide

ChezThierry
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 21 Oct 2005

Message le Sam Fév 18, 2006 14:41

Si, comme je le comprends, tes paramètres sont optionnels mais que, s'il n'y en a qu'un, c'est obligatoirement p1, pour 2, obligatoirement p1 et p2, etc, alors tu peux faire comme ça :
Code: Tout sélectionner
RewriteEngine on
RewriteRule ^(.+)/(.+)/(.+)/?$ index.php?p1=$1&p2=$2&p3=$3 [L]
RewriteRule ^(.+)/(.+)/?$ index.php?p1=$1&p2=$2 [L]
RewriteRule ^(.+)/?$ index.php?p1=$1 [L]


correiaj
WRInaute passionné
WRInaute passionné
 
Messages: 1110
Inscription: 25 Avr 2005

Message le Sam Fév 18, 2006 14:48

Ou bien:
Code: Tout sélectionner
RewriteEngine on
RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/$ index.php?p1=$1&p2=$2&p3=$3

YvesB
WRInaute impliqué
WRInaute impliqué
 
Messages: 520
Inscription: 11 Jan 2004

Message le Sam Fév 18, 2006 15:12

Merci de vos 2 réponses. Malheuresement, pour vous deux reponses le / de la fin est obligatoire pour que cela marche.

Puis avant de traité quoi que ce soit ajouté un / si il n'y est pas?

ChezThierry
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 21 Oct 2005

Message le Sam Fév 18, 2006 15:58

Je viens de faire quelques essais chez moi (apache2 sous ubuntu breezy badger 5.10) :
Avec ces règles exactes :
Code: Tout sélectionner
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?p1=$1&p2=$2&p3=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?p1=$1&p2=$2 [L]
RewriteRule ^([^/]+)/?$ index.php?p1=$1 [L]


Chez moi j'ai remplacé [L] par [L,R] pour voir le résultat directement dans la barre d'adresses

ça fonctionne pour les cas suivants :
-http://www.example.com/page1
-http://www.example.com/page1/
qui donnent -http://www.example.com/index.php?p1=page1


-http://www.example.com/page1/page2
-http://www.example.com/page1/page2/
qui donnent -http://www.example.com/index.php?p1=page1&p2=page2

-http://www.example.com/page1/page2/page3
-http://www.example.com/page1/page2/page3/
qui donnent -http://www.example.com/index.php?p1=page1&p2=page2&p3=page3


(Jai modifié par rapport à mon premier post parce qu'on avait p1=page1/ dans certains cas (le / final restait)

Es-tu sûr que ça ne fonctionne pas chez toi, ça ?

YvesB
WRInaute impliqué
WRInaute impliqué
 
Messages: 520
Inscription: 11 Jan 2004

Message le Sam Fév 18, 2006 17:05

Quand je copie/colle ton htaccess, seul p1 recupere une valeur et c'est la valeur : 'index.php' !

si j'enleve le '?' a la fin de chaque regle,

RewriteRule ^([^/]+)/$ index.php?p1=$1 [L]

ca marche, mais probleme si je ne met pas le / a la fin de l'url,


cela ne marche pas...

ChezThierry
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 21 Oct 2005

Message le Sam Fév 18, 2006 18:59

C'est pas normal que tu retrouves index.php dans p1, ça veut dire une de ces deux choses :
- les règles sont appliquées 2 fois de suite, une fois pour créer l'URL avec index.php, et l'autre où p1 prends la valeur index.php, ce qui est impossible à cause du [L]
- tu appelles toi-même une url du style index.php, et la règle prends ça pour un nom de répertoire et reformule index.php?p1=index.php

Si tu me confirmes que tu n'as rien d'autre dans ton .htaccess que ces règles, on va essayer comme ça :
Code: Tout sélectionner
RewriteRule ^index.php$ - [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?p1=$1&p2=$2&p3=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?p1=$1&p2=$2 [L]
RewriteRule ^([^/]+)/?$ index.php?p1=$1 [L]

YvesB
WRInaute impliqué
WRInaute impliqué
 
Messages: 520
Inscription: 11 Jan 2004

Message le Sam Fév 18, 2006 19:41

Ce coup si ... ca marche complementement ! Merci mille fois de ta percévérance. Et parce qu'un PR 5 vos mieux que 100 mercis, je ferait un lien sur ton site en profil quand mon site sera reoprérationnel.


Merci bonne soirée :)
(Merci aussi correiaj)

ChezThierry
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 273
Inscription: 21 Oct 2005

Message le Dim Fév 19, 2006 14:30

J'essaye d'aider dans cette rubrique autant que faire se peut, puisque je suis fan de Perl et que j'ai l'habitude d'utiliser les regexp, ça me fait donc plaisir de me triturer un peu la cervelle pour répondre.

C'est néanmoins la première fois qu'on me propose de me remercier de cette façon, merci beaucoup à toi, surtout que mon pauvre petit blog tarde à trouver son public, une petite montée de PR pourrait peut-être l'aider :)

YvesB
WRInaute impliqué
WRInaute impliqué
 
Messages: 520
Inscription: 11 Jan 2004

Message le Dim Fév 19, 2006 18:37

Aucun probleme. Le lien et deja en place sur la page daccueil temporaire : www.afterdreams.com


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités