Comment supprimer la query string pour une redirection 301 ?

Nouveau WRInaute
Bonjour à tous,

Je suis actuellement en train de migrer un site d'une ancienne version vers une nouvelle. Bien entendu, je veux garder les bénéfices du référencement de la première version et éviter les problèmes de duplication de contenu, c'est pourquoi je cherche à rediriger les anciennes url vers les nouvelles en 301.

Les anciennes url se présentent de la façon suivante :
http://www.monsite.com/fr/display_page.asp?ext=fr&pg=xx-x

Les nouvelles url :
http://www.monsite.com/xxxxxxxx-xxx-xxx

Voici les redirections que j'ai faites dans mon .htaccess :
Code:
RewriteCond %{QUERY_STRING} ^ext=fr&pg=23-0$
RewriteRule ^fr\/display_page\.asp$ /evenements-et-salons [L,R=301]
RewriteCond %{QUERY_STRING} ^ext=fr&pg=21-0$
RewriteRule ^fr\/display_page\.asp$ /qui-sommes-nous [L,R=301]

Celles-ci fonctionnent correctement à un détail près : la query string est rajoutée au bout de mon url réécrite, ce qui nous donne http://www.monsite.com/xxxxxxxx-xxx-xxx?ext=fr&pg=xx-x

Auriez-vous une idée du pourquoi du comment ?

PS : je précise que c'est pour une boutique passée en magento et que le .htaccess est assez complet et compliqué.
D'autres redirections sont présentes dans la partie rewrite de celui-ci :
Code:
<IfModule mod_rewrite.c>

############################################
## enable rewrites

    Options +FollowSymLinks
    RewriteEngine on

############################################
## you can put here your magento root folder
## path relative to web root

    #RewriteBase /magento/

############################################
## workaround for HTTP authorization
## in CGI environment

    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

############################################
## always send 404 on missing files in these folders

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################
## never rewrite for existing files, directories and links

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

############################################
## rewrite everything else to index.php

    RewriteRule ^fr\/$ / [L,R=301]
    RewriteRule ^eng\/$ /?___store=english&___from_store=english [L,R=301]
    RewriteCond %{QUERY_STRING} ^ext=fr&pg=23-0$
    RewriteRule ^fr\/display_page\.asp$ /evenements-et-salons [L,R=301]
    RewriteCond %{QUERY_STRING} ^ext=fr&pg=21-0$
    RewriteRule ^fr\/display_page\.asp$ /qui-sommes-nous [L,R=301]

    RewriteRule .* index.php [L]

</IfModule>
 
WRInaute impliqué
Je suis pas sur mais il me semble avoir lu récemment sur un topic qu'il fallait ajouter "?" à la fin de l'url réécrite :
Code:
RewriteRule .* index.php? [L]
A tester / confirmer

ps: ne serait-ce pas mieux de rediriger vers / plutot que index.php ?
 
Nouveau WRInaute
seebz a dit:
Je suis pas sur mais il me semble avoir lu récemment sur un topic qu'il fallait ajouter "?" à la fin de l'url réécrite :
Code:
RewriteRule .* index.php? [L]
A tester / confirmer

ps: ne serait-ce pas mieux de rediriger vers / plutot que index.php ?
Salut, effectivement, le ? a réglé le problème, merci beaucoup :)

Sinon, le renvoi vers index.php est une contrainte de magento ;)
 
Discussions similaires
Haut