Redirection url suite à mise en place url rewriting.

Nouveau WRInaute
J'ai mis en place sur mon site de l'url rewrting dans le but d'améliorer le référencement:
products.php?cat=xx vers nouveau-nom-xx.html
et
details.php?cat=xx vers nouveau-nom-xx.html

Afin d'éviter que les robots ne conservent dans leur base 2 url correspondants à une même et unique page (en terme de description), je souhaiterai mettre via htaccess un renvoi d'erreur pour les url en php afin que les robots ne conservent qu'un seul url en base.

Merci pour votre aide.
 
WRInaute accro
Webmaster EE a dit:
je souhaiterai mettre via htaccess un renvoi d'erreur pour les url en php afin que les robots ne conservent qu'un seul url en base.
Bonjour
Ce serait une erreur que de renvoyer un entete d'erreur. Il te faut mettre des redirections 301 des anciennes URL vers les nouvelles.
Si, dans tes URL, "nouveau-nom" est fixe, tu dois pouvoir le faire avec des expressions régulières dans le .htaccess (redirect match)
Si "nouveau-nom" change selon le produit, tu ne pourras pas le faire dans .htaccess, uniquement en PHP.
 
Nouveau WRInaute
Merci pour ta réponse.
En effet il va y avoir plusieurs "nouveau-nom-xx", car le xx est en fait une variable numérique correspondant à différents produits inscrits.
Comment faire dans ce cas, quel code dois je placer en php ? et surtout ou ?
J'avoue être totalement novice et avancer petit à petit avec toutes les informations et conseils que je peux avoir sur les forums.
Merci





nickargall a dit:
Webmaster EE a dit:
je souhaiterai mettre via htaccess un renvoi d'erreur pour les url en php afin que les robots ne conservent qu'un seul url en base.
Bonjour
Ce serait une erreur que de renvoyer un entete d'erreur. Il te faut mettre des redirections 301 des anciennes URL vers les nouvelles.
Si, dans tes URL, "nouveau-nom" est fixe, tu dois pouvoir le faire avec des expressions régulières dans le .htaccess (redirect match)
Si "nouveau-nom" change selon le produit, tu ne pourras pas le faire dans .htaccess, uniquement en PHP.
 
WRInaute accro
Il n'y a pas de code tout fait pour ça. Ça dépend de ta base de données. Il te faut récupérer l'url appelée,puis la comparer avec l'url réécrite souhaitée. Si elles sont différentes tu rediriges vers l'url réécrite souhaitée avec une redirection 301 (regarde du cote de la fonction header ).
 
Nouveau WRInaute
En fait j'ai mis en place des règles de ré écritures dans le htaccess, et je suis allé dans le code modifier les url. De cette manière lorsque l'on se promène sur le site avec la souris et que l'on passe sur des zones actives, les url apparaissant sont bien les url du type "nouveau-nom-xx.html".
Mais lorsque je force la recherche de l'url initial en php "products.php?cat=xx", il est toujurs "actif". Est ce que dans un tel cas, cet url "products.php?cat=xx" est toujours "accroché par les robots ou pas ? car si il n'est plus "accroché", ma question n'est plus d'actialité.
En fait je crois que je te raconte une bêtise :(, cet url est déjà dans les bases des robots puisque probablement déjà indexé.

nickargall a dit:
Il n'y a pas de code tout fait pour ça. Ça dépend de ta base de données. Il te faut récupérer l'url appelée,puis la comparer avec l'url réécrite souhaitée. Si elles sont différentes tu rediriges vers l'url réécrite souhaitée avec une redirection 301 (regarde du cote de la fonction header ).
 
WRInaute accro
Oui, tes anciennes URL sont déjà indexées et continueront de l'être tant qu'elles renverront un code 200 (Ok). Elles seront toujours questionnées par les moteurs, même si les liens qui y menaient ont disparu.
Il te faut donc passer par la solution de redirection que je t'ai suggérée.
 
Nouveau WRInaute
Merci.
Vraiment aucun moyen de passer par le htaccess pour effectuer cela ?
Avec mes piètres connaissances, je ne peux pas envisager de la programmation php pour cela, j'ai bien regardé dans le header comme tu me l'as conseillé, mais je n'y comprends vraiment rien.

N'y a t il pas moyen d'utiliser une fonction du type:

" Si vous souhaitez faire savoir au navigateur/robot qu’une page a été remplacée définitivement, utiliser le code 301 comme dans :
RewriteRule ^ancien\.html$ http://domaine.tld/nouveau.html [R=301,L]
Dans ce cas précis, une réécriture "externe" s’impose (utilisation de http://...) "

Si envisageable, que pourrait devenir cette formule pour un ancien url: products.php?cat=20 qui est devenu produit-20.html ?


Il faudrait

nickargall a dit:
Oui, tes anciennes URL sont déjà indexées et continueront de l'être tant qu'elles renverront un code 200 (Ok). Elles seront toujours questionnées par les moteurs, même si les liens qui y menaient ont disparu.
Il te faut donc passer par la solution de redirection que je t'ai suggérée.
 
WRInaute accro
Comme je te l'ai dit précédemment, Si "nouveau-nom" change selon le produit (récupéré dans la base de données), tu ne pourras pas le faire dans .htaccess, uniquement en PHP.
 
Nouveau WRInaute
En fait c'est uniquement un chiffre xx qui va changer derrière "nouveau-nom-". C'est pour cela que je pensais pouvroir traiter cela par le dossier htaccess.
Si je n'ai pas trop de "nouveau-nom-xx", n'est il pas envisageable d'écrire pour chaque produit une règle dans htaccess ?
C'est pour cela que je te demandais un exemple avec un numéro fixe. products.php?=cat 20 eplacé par nouveau-nom-20.html

nickargall a dit:
Comme je te l'ai dit précédemment, Si "nouveau-nom" change selon le produit (récupéré dans la base de données), tu ne pourras pas le faire dans .htaccess, uniquement en PHP.
 
WRInaute accro
Ah en effet si le "nouveau-nom" n'est pas différent pour chaque produit, c'est beaucoup plus jouable.

mais comme je ne suis pas un expert des règles de redirection 301 (surtout pour des URL ayant un point d'interrogation dans l'URL à rediriger), faudrait demander à des experts du .htaccess ...
 
Nouveau WRInaute
Bonjour Nickargall,

Je te remercie pour tes analyses / réponses.

Du coup à force de lire un peu tous les posts je me demande quelque chose:

J'ai donc mis en place de l'url rewritting avec certaines formaules dans mon htaccess. Mais je suis également allé dans le code source pour modifier manuellement les url. Du coup quand on se ballade sur le site, on voit sous le curseur de la souris les bons url pointer.
Est ce que dans ce cas, même si les robots ont déjà indexés les anciens url, les nouveaux passages des robots ne vont voir que les "bons", et qu'a force de ne voir que cela, ils vont finir par désindexer les anciens ? (je ne sais pas si je suis clair ...)

Une question encore si tu leepermets: j'ai entré dans mon sitemap les nouveaux url en html, et je me récupère un message d'erreur quand je consulte mon site map par son url habituel. Cela a t-il un lien ?

Merci



nickargall a dit:
Ah en effet si le "nouveau-nom" n'est pas différent pour chaque produit, c'est beaucoup plus jouable.

mais comme je ne suis pas un expert des règles de redirection 301 (surtout pour des URL ayant un point d'interrogation dans l'URL à rediriger), faudrait demander à des experts du .htaccess ...
 
WRInaute accro
Non, comme je te l'indiquais, les moteurs ne vont pas effacer tes anciennes URL de leur index, sauf si elles renvoient un code d'erreur (type 404, ce qui cause une perte de leur référencement) soit une redirection 301.
 
Nouveau WRInaute
OK Merci.
j'ai mis un autre post plus axé sur le htacess, mais pour l'instant rien.
Attendons ..
Bon courage et merci encore.


nickargall a dit:
Non, comme je te l'indiquais, les moteurs ne vont pas effacer tes anciennes URL de leur index, sauf si elles renvoient un code d'erreur (type 404, ce qui cause une perte de leur référencement) soit une redirection 301.
 
Discussions similaires
Haut