Bonjour,
Mon client m'a fournit un fichier avec les lignes suivantes :
Code apache2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 RedirectPermanent pages/rechercher-un-bien.php <a href="http://www.son-site.com/acheter" target="_blank">http://www.son-site.com/acheter</a> RewriteCond %{QUERY_STRING} ^current=(.*)$ RewriteRule ^pages/rechercher-un-bien.php$ <a href="http://www.son-site.com/acheter?" target="_blank">http://www.son-site.com/acheter?</a> [L,R=301]
Comme l'instruction RedirectPermanent ne semble pas fonctionner sur son serveur j'ai remplacé ces instructions par des RewriteRule ... [L,R=301]http://httpd.apache.org/docs/2.4/mod...irectpermanent
Code apache2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 RewriteRule pages/rechercher-un-bien.php <a href="http://www.son-site.com/acheter" target="_blank">http://www.son-site.com/acheter</a> [L,R=301] RewriteCond %{QUERY_STRING} ^current=(.*)$ RewriteRule ^pages/rechercher-un-bien.php$ <a href="http://www.son-site.com/acheter?" target="_blank">http://www.son-site.com/acheter?</a> [L,R=301]
Ce qui est sensé être équivalent.
(mais peut être que je me trompe.)
Avec ces règles misent en place, l’ancienne url :
http://www.son-site.com/pages/recher...fiche=12187749
Est redirigé vers
http://www.son-site.com/acheter?fiche=12187749
(301 Moved Permanently)
Le client voudrait que les paramètres « ?fiche=12187749 » disparaissent lors de la redirection.
Hors le comportement observé est exactement celui décrit dans la règle :
A cause du flag [L] cette règle empêche le traitement des règles suivantes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule pages/rechercher-un-bien.php http://www.son-site.com/acheter [L,R=301]
http://httpd.apache.org/docs/trunk/r...gs.html#flag_l
Donc tous les requêtes vers pages/rechercher-un-bien.php* sont redirigé vers http://www.son-site.com/acheter avec transmission de la query_string. (Comportement par défauts d’apache.)
Une solution serait d’ajouter le flag [QSD] http://httpd.apache.org/docs/trunk/r....html#flag_qsd
Mais apache refuse de redémarrer.
J'ai également testé en inversant l'ordre des deux règles
Ou en enlevant le flag [L] de la première règle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 RewriteCond %{QUERY_STRING} ^current=(.*)$ RewriteRule ^pages/rechercher-un-bien.php$ http://www.son-site.com/acheter? [L,R=301] RedirectPermanent pages/rechercher-un-bien.php http://www.son-site.com/acheter
Code apache2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 RewriteRule pages/rechercher-un-bien.php <a href="http://www.son-site.com/acheter" target="_blank">http://www.son-site.com/acheter</a> [R=301] RewriteCond %{QUERY_STRING} ^current=(.*)$ RewriteRule ^pages/rechercher-un-bien.php$ <a href="http://www.son-site.com/acheter?" target="_blank">http://www.son-site.com/acheter?</a> [L,R=301]
Mais j'arrive juste à en conclure que ça :
ça ne marche pas..
Code apache2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 RewriteCond %{QUERY_STRING} ^current=(.*)$ RewriteRule ^pages/rechercher-un-bien.php$ <a href="http://www.son-site.com/acheter?" target="_blank">http://www.son-site.com/acheter?</a> [L,R=301]
Partager