AniMo Posté 18 Décembre 2009 Posté 18 Décembre 2009 Tout d'abord bonjour, j'ai un soucis avec les redirections d'un site qui ont été écrites en anglais. Comme c'est un ancien site, il y a pas mal d'articles avec des liens qui utilisent ces redirections, mais il y a aussi google qui a indexé pas mal d'url redirigées. Un ex de redirection dont je parle : RewriteRule ^products/(.*\.htm)$ app/modules/products/titleInfo.php?doorwaypage=$1 [L] Comme vous le constatez la personne qui a écrite la redirection initialement n'a pas trop pensé au référencement. un terme basique, en anglais pour un site en français... évidemment je peux changer ça en : RewriteRule ^le-terme-souhaité/(.*\.htm)$ app/modules/products/titleInfo.php?doorwaypage=$1 [L] Mais quelqu'un qui clique sur le lien dans google ou dans un article interne tombera sur une erreur 404 Est-ce possible de formuler la règle pour que la redirection 1 soit redirigée de façon permanente vers la redirection 2 ? J'ai testé plusieurs trucs il y a un moment mais rien ne fonctionnait alors j'aimerais avoir votre avis. Merci d'avance
jcaron Posté 18 Décembre 2009 Posté 18 Décembre 2009 Les RewriteRules en question ne sont pas des redirections, mais plutôt des alias: de l'extérieur (navigateurs, moteurs...), seule l'URL au format dans la première partie est effectivement visible. Il te faut donc rajouter une "vraie" redirection qui va renvoyer les anciennes URLs vers les nouvelles. Pas un grand spécialiste de la RewriteRule, mais quelque chose comme: RewriteRule ^products/(.*\.htm)$ http://nomdusite/nouveauterme/$1 [R=301] devrait faire l'affaire (si c'est pas ça c'est pas très loin). Jacques.
AniMo Posté 18 Décembre 2009 Auteur Posté 18 Décembre 2009 Merci pour la réponse j'avais laissé deux redirections: RewriteRule ^products/(.*\.htm)$ app/modules/products/titleInfo.php?doorwaypage=$1 [L]RewriteRule ^nouveauterme/(.*\.htm)$ app/modules/products/titleInfo.php?doorwaypage=$1 [L] et bien sur en ajoutant une redirection 301 en plus ça ne fonctionnait pas. Maintenant ça marche : RewriteRule ^nouveauterme/(.*\.htm)$ app/modules/products/titleInfo.php?doorwaypage=$1 [L]RewriteRule ^products/(.*\.htm)$ nouveau-terme/$1 [R=301] donc merci !
Dan Posté 18 Décembre 2009 Posté 18 Décembre 2009 La règle de base lorsqu'on utilise une redirection 301 est de mettre l'URL complète en second argument ! Donc dans ton cas : RewriteRule ^products/(.*\.htm)$ http://tondomaine.tld/nouveau-terme/$1 [R=301,L]
jcaron Posté 18 Décembre 2009 Posté 18 Décembre 2009 J'ai failli dire la même chose, mais j'ai été vérifier dans la doc d'Apache, et dans ce cas précis en fait on n'a pas besoin de mettre l'URL complète: le flag [R] ajoute automatiquement le début. />http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule C'est effectivement différent des directives Redirect* ou de ce qu'on met dans un header Location: directement. Jacques.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant