Version complète: sur le forum Webmaster Hub : Problème avec redirection 301 toute simple
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
Cleden
Bonjour,

Je ne suis pas un king des expressions régulière et me contente généralement de faire du copié/collé/modifié pour arriver à mes fins. J'ai déjà utilisé le htaccess pour des redirections 301 mais là rien à faire.

Voici mon htaccess:
CITATION
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-z-]+).html$ /index.php?page=$1 [NC,L]
RewriteRule ^index.php?page=situation$ /situation-locations.html [QSA,L,R=301]
RewriteRule ^index.php?page=environnement$ /environnement-gites.html [QSA,L,R=301]
RewriteRule ^index.php?page=ty_coz$ /location-ty-coz.html [QSA,L,R=301]
RewriteRule ^index.php?page=ty_marchosi$ /location-ty-marchosi.html [QSA,L,R=301]
RewriteRule ^index.php?page=ty_saout_nord$ /location-ty-saout-nord.html [QSA,L,R=301]
RewriteRule ^index.php?page=ty_saout_sud$ /location-ty-zaout-sud.html [QSA,L,R=301]


Vous l'aurez compris, je souhaite rediriger index.php?page=situation vers situation-locations.html mais rien n'y fait ça ne marche pas. Je n'ai pourtant pas oublié le / nécessaire chez OVH. Est-ce que ce ne serait pas du au fait que mon url contient un "?" ou un "=", je ne sais pas.

Une exemple de redirection qui ne fonctionne pas: http://lezoulien.cap-sizun.com/index.php?page=situation

J'espère que vous trouverez une solution à mon problème,
Loïc
Dan
Le problème vient du fait que tu tentes d'utiliser le QUERy_STRING dans ta règle, alors que mod_rewrite ne le voit pas, du moins pas à cet endroit;

Il faut utiliser une réécriture conditionnelle, comme par exemple:
CODE
RewriteCond %{QUERY_STRING} page=([a-z]*)
RewriteRule (.*) http://www.dedomaine.tld/%1.html [R=301,L]


Qui redirigera toute page avec un QUERY_STRING sous la forme page=abc vers abc.html
Cleden
Merci Dan pour ta réponse,

Etant donné qu'il n'y a pas de logique dans mes redirection, j'ai essayé
CITATION
RewriteCond %{QUERY_STRING} page=situation
RewriteRule (.*) http://lezoulien.cap-sizun.com/situation-locations.html [R=301,L]


mais ça me redirige -http://lezoulien.cap-sizun.com/index.php?page=situation vers -http://lezoulien.cap-sizun.com/situation-locations.html?page=situation-locations

En fait, il rajoute la valeur du query string à la fin, y a t-il possibilité d'éviter ça ?

Loïc
Cleden
Je me répond à moi même car je suis parvenu à trouver la réponse après quelques recherches.

CITATION
RewriteCond %{QUERY_STRING} ^page=environnement$
RewriteRule (^index.php$|^$) /environnement-gites.html? [R=301]


Loïc
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.