louetzhang Posté 10 Avril 2008 Posté 10 Avril 2008 Bonjour, J'ai un fichier .htaccess avec la regle suivante : RewriteEngine On RewriteRule ^alsace\.html$ region.php?idRegion=6 [L] Le probleme est que quand je vais sur ...http://www.monsite.fr/region.php?idRegion=6 je ne suis pas redirigé vers http://www.monsite.fr/alsace.html Est ce possible, et si oui, savez vous ce qui cloche dans ma regle ? merci d'avance
KnockedMaster Posté 10 Avril 2008 Posté 10 Avril 2008 (modifié) Salut, C'est normal ... Si tu veux aller à la page http://www.monsite.fr/alsace.html, il faut un lien du type <a href="http://www.monsite.fr/alsace.html"> et non pas http://www.monsite.fr/region.php?idRegion=6 Avec ta règle, tu dis au serveur "si on demande alsace.html, servir la page region.php?idRegion=6" et pas l'inverse. Dès lors, quand tu fais de l'url rewriting, ne perds pas de vue que les ur'sl 'originales' sont toujours accessibles et qu'il faut donc prendre garde de les supprimer pour éviter les contenus dupliqués ... Si c'est une redirection que tu veux, la syntaxe est différente et tu dois utiliser le flag [R=301] (par exemple) : RewriteEngine OnRewriteRule region.php?idRegion=6 http://www.monsite.fr/alsace.html [R=301] ou RewriteEngine OnRedirectPermanent region.php?idRegion=6 http://www.monsite.fr/alsace.html Il faut que la page alsace.html existe réellement dans ce cas. Bonne nuit Modifié 10 Avril 2008 par KnockedMaster
Dan Posté 11 Avril 2008 Posté 11 Avril 2008 Si c'est une redirection que tu veux, la syntaxe est différente et tu dois utiliser le flag [R=301] (par exemple) : RewriteEngine OnRewriteRule region.php?idRegion=6 http://www.monsite.fr/alsace.html [R=301] ou RewriteEngine OnRedirectPermanent region.php?idRegion=6 http://www.monsite.fr/alsace.html Et non ! Autant la première partie de ton post est correcte, autant ceci est faux Dès qu'il y a une query string, il faut procéder différemment parce que RewriteRule ne permet pas ce type de règle. Il faut plutôt utiliser une réécriture conditionnelle comme: RewriteCond %{QUERY_STRING} idregion=6RewriteRule .* http://www.monsite.com/alsace.html ou plus généralement RewriteCond %{QUERY_STRING} idregion=([0-9]+)RewriteRule .* http://www.monsite.com/region-%1.html si tu veux qu'une URL avec idregion=12 comme paramètre se transforme en region-12.html Mais il faut aussi modifier les sources comme tu le dis justement, la réécriture n'a rien de magique.
KnockedMaster Posté 11 Avril 2008 Posté 11 Avril 2008 Huhu ... merci Dan pour avoir rectifié le tir ... prochaine fois je tournerai ma langue sept fois avant de parler On va dire qu'il était tard ! Bonne journée et @+
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant