Aller au contenu

Sujets conseillés

Posté

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

Posté

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.

Posté

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 !

Posté

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] 

Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...