|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
YvesB WRInaute passionné

Inscrit le: 11 Jan 2004 Messages: 512 Localisation: Bournemouth, England
|
Posté le : Sam Fév 18, 2006 15:23 Sujet du message: comment ignorer le / final? |
|
|
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 impliqué

Inscrit le: 21 Oct 2005 Messages: 273
|
Posté le : Sam Fév 18, 2006 15:41 Sujet du message: comment ignorer le / final? |
|
|
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: |
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 accro

Inscrit le: 25 Avr 2005 Messages: 1106 Localisation: Paraná y Bombonera
|
Posté le : Sam Fév 18, 2006 15:48 Sujet du message: comment ignorer le / final? |
|
|
Ou bien:
| Code: |
RewriteEngine on
RewriteRule ^([^/]*)/?([^/]*)/?([^/]*)/$ index.php?p1=$1&p2=$2&p3=$3
|
|
|
| |
|
 |
YvesB WRInaute passionné

Inscrit le: 11 Jan 2004 Messages: 512 Localisation: Bournemouth, England
|
Posté le : Sam Fév 18, 2006 16:12 Sujet du message: comment ignorer le / final? |
|
|
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 impliqué

Inscrit le: 21 Oct 2005 Messages: 273
|
Posté le : Sam Fév 18, 2006 16:58 Sujet du message: comment ignorer le / final? |
|
|
Je viens de faire quelques essais chez moi (apache2 sous ubuntu breezy badger 5.10) :
Avec ces règles exactes :
| Code: |
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 passionné

Inscrit le: 11 Jan 2004 Messages: 512 Localisation: Bournemouth, England
|
Posté le : Sam Fév 18, 2006 18:05 Sujet du message: comment ignorer le / final? |
|
|
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 impliqué

Inscrit le: 21 Oct 2005 Messages: 273
|
Posté le : Sam Fév 18, 2006 19:59 Sujet du message: comment ignorer le / final? |
|
|
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: |
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 passionné

Inscrit le: 11 Jan 2004 Messages: 512 Localisation: Bournemouth, England
|
Posté le : Sam Fév 18, 2006 20:41 Sujet du message: comment ignorer le / final? |
|
|
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 impliqué

Inscrit le: 21 Oct 2005 Messages: 273
|
Posté le : Dim Fév 19, 2006 15:30 Sujet du message: comment ignorer le / final? |
|
|
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 passionné

Inscrit le: 11 Jan 2004 Messages: 512 Localisation: Bournemouth, England
|
Posté le : Dim Fév 19, 2006 19:37 Sujet du message: comment ignorer le / final? |
|
|
| Aucun probleme. Le lien et deja en place sur la page daccueil temporaire : www.afterdreams.com |
|
| |
|
 |
| |
|
|