[Apache] need help pour RewriteRule et regexp

need help pour RewriteRule et regexp [Apache] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 16-05-2008 à 11:57:19    

Bonjour à tous,  
 
J'ai posté ce message sur le forum Windows & Software mais on m'a conseillé de plutôt le poster ici ..  
 
Alors le revoici, désolé pour le double post :  
 
--------------------------------------------------
 
J'en avais déjà parlé dans un autre topic, je me décide à mettre en place une solution via la RewriteRule d'Apache, pour solutionner un problème d'accès à des fichiers dont les noms comportent des accents.
 
Il s'agit ici d'administration système, je ne sais pas vraiment dans quelle catégorie poster ce message (plus en Windows et Software qu'en programmation, je dirais..)  
 
Voici ce que dit la doc officielle : http://httpd.apache.org/docs/1.3/m [...] ewriteRule
 
Je suis un peu paumé au niveau de la rédaction de mon expression régulière.  
 
Je voudrais faire la même chose qu'un rawurlencode(ut8_encode()) (cf. ce topic externe) au niveau d'une RewriteRule.
 
En gros : si dans le browser on entre :  
 
http://monsite.ext/chemin/testé.htm
 
je voudrais que ça soit transformé, via la RewriteRule , en :  
 
http://monsite.ext/chemin/test%C3%A9.htm
 
Vous me direz qu'Apache fait déjà ce genre de transformation... oui mais le problème c'est que chez moi il les change les é en %E9, et je n'ai pas le loisir de m'amuser à réinstaller Apache et encore moins à le recompiler avec la bonne directive de conversion... qui n'existe apparemment dans aucun fichier conf (toute preuve du contraire est laaaargement bienvenue !)
 
Je plante un peu sur la syntaxe du "search and replace"...
 
"[\xE9]" est le pattern pour trouver les é, [\xE8] pour les è, etc.
 
Je voudrais dire ceci à ma RewriteRule :  

Citation :

Si tu trouves, dans la dernière partie de l'URL (celle après le dernier slash), un [\xE9] dans le nom, eh bien redirige vers exactement la même URL, où tu remplaces ce caractère par %C3%A9.


 
Mieux encore :  

Citation :

Si tu trouves, dans la dernière partie de l'URL (celle après le dernier slash), un des caractères parmi la liste ([\xE9],[\xE8],...) dans le nom, eh bien redirige vers exactement la même URL, où tu remplaces ce caractère par, respectivement, (%C3%A9,%C3%A8,etc.).


 
 
Je plante sur  :
- Comment lui dire d'analyser un segment (de x à y, sachant que les deux sont dynamiques) d'une URL ?
- Comment lui donner comme paramètre de redirection ce même segment, moins un caractère en particulier ? Peut-être découper en deux segments ? Quid alors d'un mot comme "créée" avec deux accents qui se suivent ?
- Est-il possible de définir une array (la deuxième citation ci-dessus) ou dois-je écrire une RewriteRule pour chacun des accents possibles ? (avec une RewriteCond pour m'assurer que je redirige que ce qui doit être redirigé) ?
 
 
J'ai trouvé ce topic qui parle d'un problème similaire, om l'utilisateur veut remplacer ses tirets soulignés par des tirets normaux.
 
Je suis un peu effaré qu'il doive faire une RewriteRule distincte pour chacune des situations potentielles (1 rule quand le mot contient 1 tiret, 1 rule quand le mot en contient 2 , etc.)
 
Je pourrais "évaluer" combien de caractères spéciaux mon URL peut contenir au maximum mais je trouve ça d'un cochon pas possible ..
 
N'y a-t-il pas moyen, via une regexp, de spécifier de remplacer toutes les occurences d'un caractère par un autre ??

Reply

Marsh Posté le 16-05-2008 à 11:57:19   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed