Page 1 sur 1

Url rewritting et /

Posté : 13 mars 2008, 12:09
par Gico
Bonjour

j'aimerais autoriser la recuperation d'un / dans une variable,
j'ai fait ça:

[a-zA-Z0-9/-]

mais ça ne fonctionne pas.

merci

Posté : 13 mars 2008, 13:33
par Ryle
Hmm.. ça devrait pourtant fonctionner.. le slash n'est pas un caractère spécial des expressions régulières, tu ne devrais donc pas rencontrer de problème... Tu peux nous montrer l'expression complète et un exemple de chaine/url que tu testes (et les résultats attendu/obtenu aussi, tant qu'on y est :))

Posté : 13 mars 2008, 23:44
par Gico
voila:

RewriteRule fiche-([a-zA-Z-]+)-([a-zA-Z-]+)-([a-zA-Z0-9-/]+)-([0-9]+).html fiche_article.php?cat=$1&mq=$2$rf=$3&id=$4 [L]

c'est ([a-zA-Z0-9-/]+) qui pose problème car avec le / tous le site plante, ça se retablis si je le retire.
merci

Posté : 14 mars 2008, 01:50
par Hywan
'soir :).

Et si tu précisais que ta chaîne doit commencer par fiche-..., de cette façon :

Code : Tout sélectionner

RewriteRule ^fiche-([a-zA-Z-]+)-([a-zA-Z-]+)-([a-zA-Z0-9-/]+)-([0-9]+).html fiche_article.php?cat=$1&mq=$2$rf=$3&id=$4 [L]
(note le ^ en tout début)
Ça devrait éviter un problème sur le parsing des dossiers.

Posté : 14 mars 2008, 10:22
par Gico
Ca fonctionne pas, ça me met même une erreur en plus. j'ai essayé de contourné le problème(lâchement) en éliminant le / à la source pour le remplacer par un - , mais apparemment je ne sais pas faire :cry:

j'ai cette fonction, qui me permet de nettoyer les urls qui sont récupérés à partir de données dynamiques :
function stripCar($string){
	return strtr($string,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ?:\'!.',
'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY -----');
}
mais je ne sais pas comment y intégrer un /

merci

Posté : 14 mars 2008, 11:16
par Ryle
Le tiret "-" doit être le dernier caractère de ta classe pour qu'il ne soit pas interprété comme un intervale. Si tu lui indique "0-9-/" comment peut-il s'avoir si tu veux les caractères dont les codes ascii sont compris entre ceux de '0' à '9' ou de '9' à '/' ou de '0' à '/' ou je ne sais quoi encore :)

Essaye comme ceci :

Code : Tout sélectionner

([a-zA-Z0-9/-]+)
Si cela ne fonctionne toujours pas, tu peux essayer de backslasher le slash (\/) mais ca ne devrait en théorie pas être nécessaire :)

Posté : 14 mars 2008, 20:19
par Gico
ok merci
ça fonctionne, mais en fait les / dans des références ça fonctionne pas j'ai retiré les /
:wink: