Aller au contenu

Redirection 301 après url rewriting


Ponko

Sujets conseillés

Bonsoir,

Ayant changé les pages de mon site à l'aide d'un fichier .htacess et de l'url rewriting, je veux que lors de la saisie ou de la visite des robots des anciennes urls que ceux si soient redirigé vers les nouvelles;

Dans mon .htacess j'ai :

RewriteEngine On

RewriteRule ^recettes/([0-9]*).* /dossiers/dossiers.php?id_dossier=$1

RewriteRule ^rubrique-recettes/([0-9]*).* /dossiers/cat.php?idcat=$1

Tout marche bien pour l'url rewriting, par contre comment redirigez les anciennes pages ?? J'ai essayé ça :

RewriteRule ^recettes/([0-9]*).* /dossiers/dossiers.php?id_dossier=$1 [R=301, L]
ça me fait le contraire, ça redirige mais vers l'ancienne url /dossiers/dossiers.php?id_dossier=*

Hébergement 90Plan OVH

Je vous remercie par avance,

Encore merci :wub:

Modifié par Ponko
Lien vers le commentaire
Partager sur d’autres sites

Quelle est la forme des anciennes URLs et quelle est la forme des nouvelles ?

Tu parles des nouvelles en .html et des anciennes en .php ?

Si c'est le cas, les moteurs désindexeront les anciennes URLs lorsque tu n'auras plus de lien vers celles-ci. Elles seront progressivement remplacées par les nouvelles.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

il faut donc faire le contraire du contraire :D

RewriteRule ^dossiers/dossiers.php?id_dossier=([0-9]*) /recettes/$1  [R=301, L]

on peut même un peu améliorer :

RewriteRule ^dossiers/dossiers.php?id_dossier=([0-9]*) http://www.leprodelacuisine.fr/recettes/$1  [R=301, L]

Modifié par Phobos
Lien vers le commentaire
Partager sur d’autres sites

RewriteRule ^dossiers/dossiers.php?id_dossier=([0-9]*) http://www.leprodelacuisine.fr/recettes/$1  [QSA,R=301, L]

Avec un petit QSA alors :)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Quelque chose comme :

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id_dossier=([0-9]+)$
RewriteRule ^dossiers/dossiers.php$ /recettes/%1? [R=301,L]

Devrait faire l'affaire. C'est le seul moyen à ma connaissance d'effectuer une analyse la QueryString depuis un .htaccess. Si tu as besoin d'une explication sur %1 et autres j'avais déjà traité de ceci dans ce sujet.

Bonne continuation.

EDIT : Non le QSA n'améliore rien... il ne fait que concaténer la QueryString (QueryString Append) après avoir effectué la réécriture et non avant...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Milles mercis à tous et à toutes, TheRec quand je met ce que tu me dis dans le fichier .htacess les url affichées sont bien les bonnes par contre ça me met une erreur 404 !

Si tu as d'autres propositions, merci beaucoup !

Merc à tous,

Lien vers le commentaire
Partager sur d’autres sites

En fait la règle que je t'ai donnée fonctionne...simplement elle effectue une redirection en boucle car ton fichier de base dossier.php lorsqu'il est appelé lors de la réécriture invoque la règle de redirection... qui appelle la règle de réécriture (à chaque fois une nouvelle requête...). Pour prévenir ceci, il faut vérifier, avant d'effectuer la redirection que l'utilisateur a bien demandé le fichier "dossiers.php", et non la règle de réécriture qui affiche "dossiers.php", bref le code complet est le suivant :

RewriteEngine On
RewriteCond %{THE_REQUEST} !/recettes/
RewriteCond %{QUERY_STRING} ^id_dossier=([0-9]+)$
RewriteRule ^dossiers/dossiers.php$ /recettes/%1/? [R=301,L]

RewriteCond %{THE_REQUEST} !/rubrique-recettes/
RewriteCond %{QUERY_STRING} ^idcat=([0-9]+)$
RewriteRule ^dossiers/cat.php$ /rubrique-recettes/%1/? [R=301,L]

RewriteRule ^recettes/([0-9]+)[/]? /dossiers/dossiers.php?id_dossier=$1 [L]
RewriteRule ^rubrique-recettes/([0-9]+)[/]? /dossiers/cat.php?idcat=$1 [L]

THE_REQUEST contient la requête HTTP complète faite depuis le navigateur... c'est la seule variable au niveau Apache que j'ai trouvée qui contient bien "/recettes/" lorsque l'utilisateur utilise la règle de réécriture (et pas une ancienne URL). Bref, si tu en trouve une autre tu peux toujours l'utiliser...

Sinon une autre solution serait de renommer ton fichier "dossiers.php" et d'utiliser ce nouveau nom dans la règle de réécriture (celle qui n'est pas liée à la RewriteCond), cela n'a pas vraiment d'importance face à l'utilisateur car lorsqu'il utilisera la nouvelle URL il ne voit pas le nouveau nom du fichier (but de la réécriture) et cela ne correspond pas à la RewriteCond et lorsqu'il utilise l'ancien nom la redirection se fait car l'URL utilisée correspond à la RewriteCond.

Ce n'est pas très clair, je le sais, mais ce n'est pas évident à expliquer par écrit...en tous cas, je ne trouve pas d'autres formulations pour le moment ;)

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup,

J'ai mis ce que tu m'as communiqué, le rewriting marche bien (comme avant) mais par contre il n'y a pas de redirection 301 si l'utilisateur tape l'ancienne url (et c'est ce qui m'interesse)

Pour ta deuxième proposition, j'ai pas bien saisi ce que je peux faire. C'est vraiment pas évident à faire !

IL faut que je garde le même nom de fichier dossiers.php pour la redirection car ce sont les anciennes urls indexées par google.

Et depuis 2 mois, il n'a pas indexé une seule page correspond à une recette !! (contre 2800 pages pour Yahoo)

Je me casse la tête juste pour google, car avec Yahoo, tout est bien indexé et premier sur "recettes de cuisine" !

Bizarre, vous avez dit bizarre.

Quoi qu'il en soit merci pour ton aide,

Lien vers le commentaire
Partager sur d’autres sites

Merci beaucoup,

J'ai mis ce que tu m'as communiqué, le rewriting marche bien (comme avant) mais par contre il n'y a pas de redirection 301 si l'utilisateur tape l'ancienne url (et c'est ce qui m'interesse)

Étonnant...J'ai bien compris, et je peux t'assurer ce ces règles fonctionnent (j'ai testé cela sur un hébergement Windows et un hébergement Linux) peut être une particularité du mod_rewrite de OVH... Dan s'y connait mieux que moi à ce niveau, peut être que la variable THE_REQUEST n'est pas renseignée chez cet hébergeur...

Pour ta deuxième proposition, j'ai pas bien saisi ce que je peux faire. C'est vraiment pas évident à faire !

IL faut que je garde le même nom de fichier dossiers.php pour la redirection car ce sont les anciennes urls indexées par google.

En fait non, il faut que l'URL renvoie un status 301 de redirection pour que les moteurs de recherchent considèrent cette URL comme obsolète et remplacée par celle de la destination de ta redirection. Pour cette solution, tu vas renommer ton fichier "dossiers.php" en "dossiers2.php" et idem pour "cat.php" par exemple... et les règles à utiliser seront les suivantes :

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id_dossier=([0-9]+)$
RewriteRule ^dossiers/dossiers.php$ /recettes/%1/? [R=301,L]

RewriteRule ^recettes/([0-9]+)[/]? /dossiers/dossiers2.php?id_dossier=$1 [L]

RewriteCond %{QUERY_STRING} ^idcat=([0-9]+)$
RewriteRule ^dossiers/cat.php$ /rubrique-recettes/%1/? [R=301,L]

RewriteRule ^rubrique-recettes/([0-9]+)[/]? /dossiers/cat2.php?idcat=$1 [L]

Je t'explique le fonctionnement d'Apache, avant d'effectuer quelque réécriture que ce soit, il va essayer de regarder si un fichier (réel) correspond à l'URL demandée par l'utilisateur...si c'est le cas, il l'envoie à l'utilisateur...sinon il passe au mod_rewrite, qui regarde si une des règles correspond à l'URL. S'il en trouve une, il l'applique, s'il n'en trouve pas, il renvoie une erreur 404 (c'est le schéma classique, il peut varie selon les cas). Dans notre cas, lorsqu'un utilisateur va tenter d'accéder à ta page par l'ancienne URL, le fichier demandé n'existant plus (tu l'as renommé), il va dont passer au mod_rewrite et la il va tomber sur la RewriteCond, qui dit que : si la QUERY_STRING commence par id_dossier=<un chiffre ou un nombre>, passer à la règle suivante... qui elle contrôle si la page demandée est bien "dossiers/dossiers.php" et si c'est le cas effectue une redirection vers ta nouvelle URL en utilisant le nombre (référence arrière de la RewriteCond %1 (le ? indique qu'il n'y a pas besoin d'appondre la QUERY_STRING, car dans ton cas ce n'est pas nécessaire).

Si tout ça ne s'est pas produit, il passe à la règle de réécriture suivante (celle pour ton nouveau schéma d'URL)...ça sera le cas quand l'utilisateur demande une de tes nouvelles URL ou qu'il vient d'être redirigé avec la règle au dessus...car après redirection il procède comme si c'était une nouvelle requête bien entendu.

Et tu arrives aux résultats que tu désires... en tout cas les deux solutions dont je te parle fonctionnent, je les ai testées avant de te les proposer.

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

TheRec tu es génial !!!!! Enfin après deux mois de recherche, de posts sur des forums de référencements concurrents (où l'on me répondait que c'était pas possible ....) Je trouve la solution ici sur webmaster-hub grâce à l'acharnement de TheRec !!

La deuxième solution était la bonne, je n'ai pas renomé le fichier dossiers.php, j'en ai dupliqué un en l'appelant dossiers2.php !

Vraiment milles mercis, tu mérites un lien dur à vie sur toutes les pages de mon site, donnes moi ton URL stp !!!!!!

A ce propos, j'avais un pagerank 5 avec www.leprodelacuisine.com comme j'ai changé d'url et mis les redirections 301 qui s'imposaient, je vais bien bénéficier du même pagerank avec leprodelacuisine.fr ??

En tout cas, me voila soulagé ! Car j'ai 600 pages référencées des anciennes urls, je pense que ça va aider google.

Modifié par Ponko
Lien vers le commentaire
Partager sur d’autres sites

Juste une message pour te prévenir qu'il y a un bug d'affichage avec ton site "leprodelacuisine" sous firefox 1.5

sanstitre6ew.jpg

Et normalement,la redirection 301 permet de conserver le pagerank(et le nombre de backlink?) : tu garderais donc ton ancien pagerank,mais je laisse les pro du référencement confirmer.

Lien vers le commentaire
Partager sur d’autres sites

Merci K-Ola,

Oui je sais pour le bug puisque j'utilise également firefox ! Sous internet explorer pas de problème, cela se met bien en bas de page. J'avais beau fouillé je n'ai pas trouvé,

Je viens de virer la couleur du fond et le css associé. Merci de m'avoir rappelé !

Pour le Pagerank normalement oui d'après ce que j'ai pu lire, mais si l'on peut me confirmer ce sera mieux, même si je continuer le référencement avec la nouvelle adresse !

Milles mercis

PS: TheRec j'attends l'adresse de ton site

Lien vers le commentaire
Partager sur d’autres sites

Salut Ponko,

j'ai eu par le passé beaucoup de problemes de ce type entre IE et FF

95% d'entre elles se sont réglées en définissant par défaut les padding et margin de tous les blocs à 0 et en les redéfinissant au cas par cas

En effet IE par exemple établit des valeurs par défaut, en mettant tout à O (dans une div conteneur par exemple) tu évites ce genre de problemes...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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