Reécriture des URL suite a changement dans la BDD

Nouveau WRInaute
Je reviens vers vous car j'ai une autre question...suite au changement opéré par une requête SQL, et bien, les URL ont changé aussi à leur tour...prévu d'avance mais j'ai oublié ce "détail".

Alors, ma question est la suivante: sachant que les URL sont identiques à celles d'avant mais ou un seul mot (toujours le même, a savoir, tutoriel-)est venu se rajouter derrière l'url, par exemple:

/comment-utiliser-la-fonction-back.html

est devenu

/tutoriel-comment-utiliser-la-fonction-back.html

Suis je obligé de faire un RedirectPermanent 301 pour toutes l'url individuellement avec des centaines de lignes dans le htaccess ou y a t-il une fonction qui me permet d'une seule ligne de corriger toutes les URL par le htaccess, avec des expressions pour rediriger les URL au niveau des moteurs de recherche?

EDIT: Je viens de me rendre compte que la même page comporte deux URL:

Par exemple, http://www.webcyclopedie.com/tutoriel-creation-dun-vpn-sous-windows-av ... s-769.html et http://www.webcyclopedie.com/creation-dun-vpn-sous-windows-avec-openvp ... s-769.html pointent vers la même page...et le duplicate content, c'est pas très bon...

J'ai besoin de vos lumières :p
 
WRInaute accro
Tu ne nous dis pas comment on arrive de la BDD aux URLs, mais je suppose qu'il y a du rewriting, et au vu des URLs dans ton EDIT, il est basé sur l'ID à la fin du nom de page, ce qui explique qu'il y ait effectivement deux URLs. Il y en a en fait une infinité, puisque (a priori) n'importe quelles page /nimportequoi-769.html aboutira au même résultat :) Le principal problème est de d'assurer qu'il n'y a de liens que vers la "bonne" page.

Pour les liens "existants" (y compris ceux que Google a en cache), tu peux faire le redirect dans ton code php (tu vérifies que $_SERVER['REQUEST_URI'] commence par /tutoriel, voire même qu'il est exactement identique à ton URL canonique, et si ce n'est pas le cas, redirect) ou avec une rewritecond+rewriterule (là tu ne pourras pas avoir unicité d'URL, juste éliminer ceux sans le /tutoriel).

Tu as aussi la possibilité de ne pas faire de redirect mais de mettre un link rel=canonical qui indique aux moteurs quelle est la "bonne" URL.

Jacques.
 
WRInaute impliqué
Un peu comme jcaron, si tu stockes tes URL en BDD, tu vérifies que l'URL demandée correspond à celle que tu stockes, si c'est pas le cas, hop tu fais une 301 vers la bonne.
C'est ce que je fais chez moi et je met quiconque au défit de trouver deux URL différentes pour une seule et même page de news.
 
Nouveau WRInaute
Bon alors, j'ai mis en palce une redirection 301 pour une page pour faire un test:

Code:
RedirectPermanent /creation-dun-vpn-sous-windows-avec-openvpn-s-769.html http://www.webcyclopedie.com/tutoriel-creation-dun-vpn-sous-windows-avec-openvpn-s-769.html

Donc la redirection à bien lieu, mais à la fin il me rajoute l'ID (-http://www.webcyclopedie.com/tutoriel-creation-dun-vpn-sous-windows-avec-openvpn-s-769.html?id=769) :?

L'URL REWRITING est bien en place pour info, et est fait sous la forme, pour les pages en question:

Code:
RewriteRule ^(.*)-s-([0-9]*).html$   single.php?id=$2 [L]
 
Nouveau WRInaute
Anto1982 a dit:
Il doit te rajouter l'id car :

Il fait ça :
RedirectPermanent /creation-dun-vpn-sous-windows-avec-openvpn-s-769.html http://www.webcyclopedie.com/tutoriel-creation-dun-vpn-sous-windows-av ... s-769.html

et ensuite, il doit faire ça :
RewriteRule ^(.*)-s-([0-9]*).html$ single.php?id=$2 [L]

Essayes d'appliquer ta regle à l'ensemble des pages (fait le en local ;-) )

J'ai essayé pour plusieurs pages et le résultat est le même...a chaque fois il rajoute l'ID a la fin, que le Redirect soit placé avant ou après le Rewrite...

EDIT: D'ailleurs, je me rends compte que n'importe quel page, quel que soit l'URL, pointe vers la même page:

Par exemple:

-http://www.webcyclopedie.com/-s-769.html
-http://www.webcyclopedie.com/egfzgzreg-s-769.html
-http://www.webcyclopedie.com/tuto-bidon-s-769.html
-http://www.webcyclopedie.com/fqzefzef-zefzef-bdfbq-erht-sqehsqetrh-qerg-qetdhs-teghqe-rhery-s-769.html

Tant que le -s-769.html a la fin reste intact....

Est ce grave docteur?? Ou alors finalement mes redirection ne servent pas a grand chose...?
 
WRInaute accro
Ben c'est ce que je disais dans mon message. Ta rewriterule fait que tout ce qui compte c'est le -s-(numéro).html, donc tu as une infinité d'URLs qui donnent le même résultat. Mais tu as décidé qu'il y en a une qui est "la bonne" et que tu as en base de données, visiblement, donc au début de ton script php, tu vas chercher ça en base (à partir de l'ID), tu compares $_SERVER['REQUEST_URI'] (qui ne contiendra que la partie après le nom de domaine, genre /totoalamer-s-1234.html) avec la "bonne" URL, et si c'est différent tu fais un redirect.

Jacques.
 
Discussions similaires
Haut