URL rewriting et caracteres speciaux dans l'URL

Nouveau WRInaute
Bonjour a tous

Je mets en place une politique de réécriture d'URL pour permettre un meilleur classement du site par Google...
La réécriture fonctionne très bien après quelques déboires (cf mon posts précédent)

Je me heurte juste maintenant a un problème de conversion d'URL lors du URL rewriting...

prenons un exemple simple j'ai l'URL suivante
toto.php?reference=toto&desc=Sacs+à+main
qui est codée
toto.php?reference=toto&desc=Sacs+%A0+main
dans le lien du code PHP via urlencode.

cette URL est normalement transformée en
art/Sacs+%A0+main/toto.html
par le URL rewriting, mais elle est en fait re-encodée
art/Sacs+%25C3%25A0+main/toto.html
Vous constatez que le rewrite a retranscodé le % en %25 (valeur ascii de %), alourdissant l'URL et la rendant illisible...

Quand je cliquais sur un <a href="toto.php?reference=toto&desc=Sacs+%A0+main" /> non redirigé, j'avais bien toto.php?reference=toto&desc=Sacs+à+main dans la barre d'adresse, et je voudrais art/Sacs+à+main/toto.html maintenant... Ce qui n'est pas le cas

Je ne vois pas comment faire pour eviter cela dans le .htaccess.... :?
A L'AIDE !!!
Merci beaucoup :)
 
Nouveau WRInaute
Merci de ta réponse,

Oui, bien sur, j'y ai pensé (j'ai d'ailleurs une petite fonction qui le fait tout seul très bien), mais cela ne résoudrait pas vraiment mon problème, car sur certaines URL ses infos sont des clés d'accès a des fichiers... Et la impossible de modifier ces données !

De plus la plupart des infos viennent d'une base de données en UTF8, modifiable a loisir par le propriétaire du site (il peut même gérer son site en hébreu ou en arabe...)...

Ce dont j'ai besoin est donc d'une solution pour régler le problème du Rewriterule directement, sans avoir a modifier les données (dont je ne suis pas "propriétaire")

Y'a bien un truc, forcement.... je vous mets le code du .htaccess, peut-être quelqu'un pourra me SAUVER :? :? :?

Code:
<IfModule mod_rewrite.c>
RewriteEngine Off
RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html? [R=301,L]

RewriteRule art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
RewriteRule art/(.*)/(.*)/(.*)/(.*)/(.*)/(.*) $4/$5/$6 [L]
RewriteRule art/(.*)/(.*)/(.*)/(.*)/(.*) /$4/$5 [L]
</IfModule>

MERCI ! :D
 
Nouveau WRInaute
Bon, ben j'ai la solution (Et encore merci Mac, il est trop bon =>http://www.developpez.net)

alors je vous la donne (au lieu de juste vous dire que j'ai trouvé... :lol: :lol: )
comme ca si quelqu'un d'autre a le problème il saura aussi comment faire !!
Il suffisait simplement de rajouter NE dans les paramètres du 1er rewriting
Code:
<IfModule mod_rewrite.c>
RewriteEngine Off
RewriteCond %{QUERY_STRING} ^reference=(.*)&surcat=(.*)&catdesc=(.*)&desc=(.*)
RewriteRule article\.php(.*) /art/%2/%3/%4/%1.html? [R=301,L[color=#FF0000],NE[/color]]

RewriteRule art/(.*)/(.*)/(.*)/(.*)\.html /article.php?reference=$4 [L]
RewriteRule art/(.*)/(.*)/(.*)/(.*)/(.*)/(.*) $4/$5/$6 [L]
RewriteRule art/(.*)/(.*)/(.*)/(.*)/(.*) /$4/$5 [L]
</IfModule>
Et voila....
bien a vous...

(Quand je pense a toutes les horreurs que j'ai vu sur le net pour répondre a ce sujet, genre fonctions PHP, etc... alors qu'un simple paramètre et ca suffit :lol: :lol: !!!)

C'est le problème du URL Rewriting, très peu de gens seulement semblent parfaitement maitriser le language.... 8O :cry: 8)
 
Discussions similaires
Haut