Récupérer une expression qui se répète plusieurs fois

Nouveau WRInaute
bonjour à tous,

je m'attaque a l'URL rewriting depuis cet apres midi. Et je me trouve confronté à un problème que je ne sais pas vraiment comment résoudre.

J'aimerais transformer une url du type /mot1-mot2-mot3.html (avec autant de mots désirés, mais en général ca ne dépasse pas 5), en une url du type /search.php?mots=mot1 mot2 mot3... avec des espaces entre tous les mots.

Pour l'instant j'ai cela:
Code:
RewriteRule ^([0-9a-zA-Z]+)(-([0-9a-zA-Z]+))*\.html$ /search.php?mots=$1 $2 [L]

J'espérais (sans trop me faire d'illusion) que le $2 récupererait tous les mots à partir de mot2. Mais non. Je ne vois pas trop comment pouvoir faire ca, vu que la "structure" de l'url (en l'occurrence le nombre de mots) peut varier.

Pliz a l'aide.
Merci beaucoup.
 
WRInaute accro
Essaie ceci:
Code:
RewriteRule ^([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)\.html$ /search.php?mots=$1 $2 $3 $4 $5[L]
RewriteRule ^([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)\.html$ /search.php?mots=$1 $2 $3 $4[L]
RewriteRule ^([0-9a-zA-Z]+)-([0-9a-zA-Z]+)-([0-9a-zA-Z]+)\.html$ /search.php?mots=$1 $2 $3[L]
RewriteRule ^([0-9a-zA-Z]+)-([0-9a-zA-Z]+)\.html$ /search.php?mots=$1 $2[L]
T'es certain qu'il te faut des espaces dans les URL ?

Jean-Luc
 
Nouveau WRInaute
Merci pour ta contribution jeanluc. Mais ce que tu me donnes est euh...une méthode "statique" non? N'est-il pas possible de faire cela avec une expression plutot qu'avec qu'une succession de règles?
Car en fait j'ai dit que ca ne dépassait pas en général 5 mots, mais cela peut être plus, tout dépend de ce que les gens cherchent. Oui c'est un moteur de recherche que j'implémente, d'où le search.php et les mots clés.
Je ne fais que demander confirmation hein. Je ne remets pas du tout en cause ta solution, qui marche dans 97% des cas.

Merci bien.

Edit: ah oui, j'oubliais. Oui, il y a bien des espaces entre chaque mot dans l'URL. Ce n'est pas une faute de frappe.
 
WRInaute impliqué
jeanluc a dit:
Vap a dit:
Mais il y a un problème, avec une règle de réécriture tu ne pourra pas crééer d'URL avec des espaces dedans...
Il devrait pouvoir les remplacer par des %20.

Jean-Luc

Peut etre, je n'ai pas testé. Mais une règle telle que celles ci desous ne marchera pas a cause de l'espace entre $1 et $2 :

Code:
RewriteRule ^([0-9a-zA-Z]+)-([0-9a-zA-Z]+)\.html$ /search.php?mots=$1 $2[L]

Effectivement, la forme suivante marche peut etre, c'est à tester:


Code:
RewriteRule ^([0-9a-zA-Z]+)-([0-9a-zA-Z]+)\.html$ /search.php?mots=$1%20$2[L]
 
Discussions similaires
Haut