en tout cas, merci à Ams51 et Jean-Luc pour vos réponses rapides.
Je réexplique le problème rapidement : j'ai un formulaire qui renvoie vers
monsite.com/search/?query=blabla
Donc je fais une première règle d'urlrewriting qui renvoie vers l'URL que verra l'internaute et les moteurs de recherche :
monsite.com/search/blabla
puis une deuxième règle qui renvoie vers la véritable page php pour le traitement des données :
monsite.com/search.php?query=blabla
Jusqu'ici ça marche, mon souci c'est que les deux règles ne s'enchaînent pas d'affilée: les deux règles semblent s'exécuter au cours de 2 appels distincts à Apache, et je trouve ça crade.
Ams51, cela ne fonctionne pas, les règles ignorent les query strings. D'ailleurs en l'état, la règle marche bien, ce qui m'embête c'est qu'elle ne s'enchaîne pas avec l'autre.
Jean-Luc, effectivement je ne suis pas sûr d'avoir un "problème", si ça se trouve c'est le fonctionnement normal... mais peut-être pas. Là, en l'état actuel des choses, il applique 1 règle au premier passage et une deuxième au deuxième passage. Pourquoi pas les deux en même temps ? Ceci dit, ça me pose une autre question : une redirection 301 implique-t-elle forcément un deuxième hit -> est-ce que le serveur ne peut pas envoyer les données tout en précisant juste que l'adresse a changé ?
Là où je me dis que qqch ne va pas dans ces règles, c'est que les variables de mon URL sont échappées 2 fois, sans doute à cause de ces deux passages par le htaccess.
Exemple : je cherche bonnie & clyde et j'arrive sur la page /search/bonnie+%2526+clyde. Mettre un flag [NE]dans l'une ou l'autre des règles ne fonctionne pas.
Maintenant, regardez sur Dailymotion qui fait exactement la même chose que ce que je veux faire : on cherche bonnie & clyde et l'on arrive sur http://www.dailymoti...onnie+%26+clyde. Les variables n'ont été échappées qu'une fois !
Qu'ont-ils fait pour avoir ce résultat ?
Merci beaucoup encore une fois!
PS: pour mémoire, les règles qui ne s'enchaînent pas en une seule fois sont :
RewriteCond %{QUERY_STRING} ^query=(.*)$
RewriteRule ^search/$ /search/%1? [R=301]
RewriteRule ^search/(.*)$ /search.php?query=$1 [L]
Ce message a été modifié par Evangun - 13 janvier 2010 - 12:17.



Haut











