Paumé sur rédaction RewriteRule et regexp [Apache] - Logiciels - Windows & Software
Marsh Posté le 15-05-2008 à 17:40:55
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 ??
Marsh Posté le 15-05-2008 à 17:47:22
Tu as essayé d'aller en parler aux pro d'apache dans la section OSA ?
Marsh Posté le 16-05-2008 à 11:46:50
Heheh je savais vraiment pas où poster ça, je le reposter dans cette section merci pour le tuyau
Marsh Posté le 15-05-2008 à 10:40:51
Bonjour à tous,
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 :
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 :
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é) ?
Rhaa je suis paumé
Message édité par ZeBix le 15-05-2008 à 10:41:48