Duplicate content pb même url en %2B %20 ou +

Nouveau WRInaute
Bonjour,

J'ai le sentiment que Google sanctionne le positionnement de certaine page de mon site du fait qu'il indexe différente url pour une même page dynamique.
Par exemple pour la fiche de Françoise hardy sur mon site, google retrouve ces 3 urls :
www.zikpot.fr/artiste-Francoise+Hardy
www.zikpot.fr/artiste-Francoise%2BHardy
www.zikpot.fr/artiste-Francoise%20Hardy

Il s'agit de la même fiche avec le même contenu. La bonne adresse, telle que je l'ai définie dans ma navigation est celle avec le + remplaçant l'espace :
www.zikpot.fr/artiste-Francoise+Hardy

Le problème c'est que je n'arrive pas à identifier où google va chercher les url avec %2B ou %20 !!!
J'ai bien essayé le link:www.zikpot.fr/artiste-Francoise%2BHardy, ou de fouiller dans mon code, mais rien n'y fait.

On a bien eu un sitemap avant où on avait mis effectivement %2B au lieu de +, mais cela fait 2 mois qu'on l'a modifié et le problème persiste !
Dans le webmaster tool google me dit que j'ai des pages qui ont la même description ou le même titre (normal puisque c'est la même page) : mais ça montre qu'il les interprète comme des pages différentes du fait des variantes dans l'adresse ?!!

Comment puis-je résoudre le problème ?
Apparemment je ne peux pas dire à mon htaccess de remplacer le %2B ou %20 par un +

La meilleure solution serait peut etre de rediriger systématiquement :
www.zikpot.fr/artiste-Francoise%2BHardy vers www.zikpot.fr/artiste-Francoise+Hardy
mais comment faire ça, j'ai plus de 15 000 pages de ce type ?
Merci de votre aide
 
WRInaute accro
le problème, c'est que des liens avec des espaces seront compris comme " " ou bien "+" ou "%20" selon les sites. Et donc chaque site selon sa compréhension de telles url va te faire des BL mal créés, d'où les erreurs de gg
 
Nouveau WRInaute
Merci pour votre réponse.
Donc le seul moyen que j'ai résoudre le problème c'est d'intercepter par php comment le mot clé (nom de l'artiste) a été envoyé dans l'url et lorsqu'un espace a été comblé par un %20 on %2B : rediriger la page en lui remplaçant les %20 et %2B par l'adresse avec un + (adresse unique que je voudrai indexer) ????

Comment faire ce type de redirection proprement en php pour que google suive ?
 
WRInaute discret
zik a dit:
Bonjour,

J'ai le sentiment que Google sanctionne le positionnement de certaine page de mon site du fait qu'il indexe différente url pour une même page dynamique.
Par exemple pour la fiche de Françoise hardy sur mon site, google retrouve ces 3 urls :
http://www.zikpot.fr/artiste-Francoise+Hardy
http://www.zikpot.fr/artiste-Francoise%2BHardy
http://www.zikpot.fr/artiste-Francoise%20Hardy

Il s'agit de la même fiche avec le même contenu. La bonne adresse, telle que je l'ai définie dans ma navigation est celle avec le + remplaçant l'espace :
http://www.zikpot.fr/artiste-Francoise+Hardy

Le problème c'est que je n'arrive pas à identifier où google va chercher les url avec %2B ou %20 !!!
J'ai bien essayé le link:www.zikpot.fr/artiste-Francoise%2BHardy, ou de fouiller dans mon code, mais rien n'y fait.

On a bien eu un sitemap avant où on avait mis effectivement %2B au lieu de +, mais cela fait 2 mois qu'on l'a modifié et le problème persiste !
Dans le webmaster tool google me dit que j'ai des pages qui ont la même description ou le même titre (normal puisque c'est la même page) : mais ça montre qu'il les interprète comme des pages différentes du fait des variantes dans l'adresse ?!!

Comment puis-je résoudre le problème ?
Apparemment je ne peux pas dire à mon htaccess de remplacer le %2B ou %20 par un +

La meilleure solution serait peut etre de rediriger systématiquement :
http://www.zikpot.fr/artiste-Francoise%2BHardy vers http://www.zikpot.fr/artiste-Francoise+Hardy
mais comment faire ça, j'ai plus de 15 000 pages de ce type ?
Merci de votre aide

Bonsoir,
Pour te rassurer, Google ne s'amuse pas à créer des url pour accéder à ton contenu, il se contente de suivre les liens présents sur le web pour arriver à ton contenu, d'une manière ou d'une autre.

Petite piste à travailler, dans certains cms, les nuages de mots clés et moteurs de recherche interne génèrent de nombreuses url dupliquées.... .

Avant de partit dans de périlleuses manipulations php, il faut s'assurer que la cause du problème est résolue sur ton site ET qu'aucun autre site ne linke ces pages dupliquées.

ENSUITE : une bonne redirection 301 limitera le soucis combinée avec un fichier robot.txt pour demander aux robots d'arrêter d'indexer ces pages et une demande cordiale de suppression des "mauvaises url" dans ton compte google webmaster tool.

J'ai eu le même problème avec des espaces et accents dans des url et en moins d'une semaine c'était réglé avec ce process.

Je le souhaite rarement mais bonne des-indexation !
 
Nouveau WRInaute
Hello,

pour vous remercier de vos réponses et conseils voici en détails la solution qui a été mise en place. On ne sait jamais, ça pourrait servir à quelqu'un dans des cas qui ressemblent à celui là.

- On a corrigé sur le site les mauvais liens qui pointait vers des url en %2B ou %20, et en les remplaçant par des +
- Comme google est un peu long pour se rendre compte de ce changement, on a ensuite mis des url canonique
<link rel="canonical" href="<?php echo $LienPageArtiste ;?>" />

- Enfin voici le petit code php qui analyse l'url de la page, et la redirige vers la bonne si jamais il y trouve des %2B ou %20.

Code:
if (eregi("%2B", $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])){
                               $goodurl="http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
                               $goodurl=str_replace('%2B','+',$goodurl);
                               header("HTTP/1.1 301 Moved Permanently");
                               header("Location: $goodurl");
                               exit;
                               //echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
if (eregi("%20", $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'])){
                               $goodurl="http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
                               $goodurl=str_replace('%20','+',$goodurl);
                               header("HTTP/1.1 301 Moved Permanently");
                               header("Location: $goodurl");
                               exit;
                               //echo $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}

Y'avait peut-etre plus simple, mais au moins ça marche.

- Enfin, idéalement il faudrait mettre dans le fichier robot.txt toutes les url en trop qui contiennent les %2B. Je suis capable de les retrouver dynamiquement, mais ça risque de faire plus de 10 000 lignes, c'est pas grave ?

Merci de votre aide,
et joyeuses fêtes de fin d'année !!! :)
 
WRInaute accro
en fait, il n'y a pas besoin d'inclure dans le eregi le $_SERVER['SERVER_NAME'] qui ne contiendra jamais d'espaces lui
et on peut faire en plus concis.
De tête, pas vérifié
Code:
if (preg_match("#%20|%2B#", $_SERVER['REQUEST_URI'])!==FALSE){
    header("Location:".str_replace(array("%20","%2B"),"+",$_SERVER['REQUEST_URI']),FALSE,301);
    exit();
}
A la limite, tu peux ajouter lors de l'appel de cette fonction, si besoin, l'url à problème dans le robots.txt
 
Discussions similaires
Haut