TheRec
vendredi 7 avril 2006 à 21:21
Bonsoir,
les caractères spéciaux ne sont pas autorisés dans les URL...en l'occurence dans ton URL exemple tu utilises l'astérisque (*) et sauf si elle est encodée (%2A) elle ne fera que causer une erreur 400 Bad Request...
Pour le pourcent (%), c'est différent, comme il est utilisé pour encoder les caractères il ne provoque pas cette erreur, mais tant qu'une combinaison hexadécimale ne le suit pas il est ignoré...
Pour répondre à ta question, l'expression
(.*) va englober les caractères encodés..donc il n'y a pas besoin de les identifié autrement...évidemment il n'englobera pas l'astérisque à moins qu'elle soit encodée

Je pense que cette expression devrait te convenir...
CODE
RewriteRule ^([0-9]+)_(.*)\.htm$ index.php?id=$1 [L]
Cela redirige toutes les URL commençant par un id d'au moins un chiffre suivi d'un underscore (_) et se terminant par .htm .
Si tu ne veux rediriger que les URL contenant des caracètres spéciaux, ce qu'il faut savoir c'est que le serveur HTTP analyse l'URL une fois décodée...donc %E0 dans ton exemple correspond à "à" ...tu peux utiliser les caractères usuels et inverser la classe cela représentera tous les caractères autres que alphanumériques :
CODE
RewriteRule ^([0-9]+)_(.*)[^a-zA-Z0-9]+(.*)\.htm$ index.php?id=$1 [L]
Dans ce cas là, les URL commençant par un id d'au moins un chiffre suivi d'un underscore (_) et de n'importe quel caractères puis au moins un caractère ne correspondant pas à la classe et se terminant par .htm ... ce n'est pas très propre mais je n'ai pas vraiement trouvé de solution qui permet de faire ceci autrement...