Url Rewriting et Duplicat Content GOOGLE

hamoudihamoudi Member
juillet 2011 modifié dans Entraide
Bonjour,

J’ai activé l’Url rewriting sur mon site qui tourne avec la dernière version de PluXml 5.1.1
Tout fonctionne bien…

Cependant, j’ai un problème avec mon référencement Google.
Mes articles (avec Url rewritée) sont maintenant accessibles par 3 urls :
monsite.com/article1/poussin-jaune
monsite.com/article1/
monsite.com/article1/poussin-jaune.html

Je veux que Google prenne seulement en compte la première URL (monsite.com/article1/poussin-jaune) afin d’éviter de faire du Duplicate Content…
Mais Google référencie mes articles en deux fois avec les deux premières urls (monsite.com/article1/poussin-jaune et monsite.com/article1/).

Comment puis-je faire pour régler ce problème ?
Pour régler mon problème: Existe t-il une solution pour écrire les urls comme ceci:
monsite.com/poussin-jaune-article1

Merci

Réponses

  • Je suis en train de trouver une solution. Je la transmet tout a l'heure.
  • Super... Nous l'attendons avec impatience...
  • amowebamoweb Member
    juillet 2011 modifié
    # Anti doublon :
    if(preg_match('/^article([0-9]+)\/?$/',$plxMotor->get)) {
    	$a=0;
    	while(!preg_match('#^' . str_pad(preg_replace('/^article([0-9]+)\/?$/', '\1', $plxMotor->get),4,'0',STR_PAD_LEFT) . '\.#', $plxMotor->plxGlob_arts->aFiles[$a]))
    		$a++;
    	
    	header("HTTP/1.1 301 Moved Permanently");
    	header('Location: ' . $plxMotor->urlRewrite('?article' . preg_replace('/^article([0-9]+)\/?$/', '\1', $plxMotor->get) . '/' . preg_replace('#\d{4}\.(home|[0-9,])*\.\d{3}\.\d{12}\.([a-z0-9-]+)\.xml$#', '\2', $plxMotor->plxGlob_arts->aFiles[$a])));
    	exit;
    }
    
    Voilà, c'est à placer dans index.php juste après
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    a quoi sert la boucle while ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Elle sert à trouver l'article qui correspond au numéro. Je compare par rapport à la liste des fichiers pour trouver la fin de l'url.
  • StéphaneStéphane Member, Former PluXml Project Manager
    juillet 2011 modifié
    ça irait pas plus vite avec un truc du genre... (peux pas tester j'ai rien sous la main, mais l'idée est là)
    if(preg_match('/^article([0-9]+)\/?$/',$plxMotor->get, $capture)) {
    
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: ' . $plxMotor->urlRewrite('?article' . preg_replace('/^article([0-9]+)\/?$/', '\1', $plxMotor->get) . '/' . preg_replace('#\d{4}.\d{3}.\d{3}.\d{12}.([a-z-]+)\.xml$#', '\1', $plxMotor->plxGlob_arts->aFiles[$capture[1]])));
        exit;
    
    }
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • amowebamoweb Member
    juillet 2011 modifié
    Si totalement, j'ai mis à jours mon post. J'avais complètement zapé que aFiles était trié.

    EDIT : aFiles, n'est pas trié à cet endroit du code. Je vais déplacer le hack.
  • Merci beaucoup...
    Si j'ai bien tout suivi pour régler mon problème de Duplicat Content il suffit de placer dans index.php juste après
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
    le code suivant?
    Stéphane a écrit:
    ça irait pas plus vite avec un truc du genre... (peux pas tester j'ai rien sous la main, mais l'idée est là)
    if(preg_match('/^article([0-9]+)\/?$/',$plxMotor->get, $capture)) {
    
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: ' . $plxMotor->urlRewrite('?article' . preg_replace('/^article([0-9]+)\/?$/', '\1', $plxMotor->get) . '/' . preg_replace('#\d{4}.\d{3}.\d{3}.\d{12}.([a-z-]+)\.xml$#', '\1', $plxMotor->plxGlob_arts->aFiles[$capture[1]])));
        exit;
    
    }
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    si on veut mettre ce genre de control en natif pour eviter le duplicate content (ça me semble plutot pas mal à pendre en considération), on peut optimiser tout ça

    plutot que de mettre la modif dans index.php (pas très propre à mon gout et optimisé en plus car le test est toujours fait, qu'on soit en mode categorie, static, etc...), on fait ça dans class.plx.motor.php, fonction prechauffage

    tu adaptes la ligne suivante pour avoir le bon regex
    elseif($this->get AND preg_match('/^article([0-9]+)\//',$this->get,$capture)) {
    
    si dans l'url on demande article10 on valide le if, on test ensuite si le nom du fichier est présent dans l'url pour faire une redirection 301 si nécessaire.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • amowebamoweb Member
    juillet 2011 modifié
    @hamoudi Non, pour l'instant il faut prendre le code que je décrit dans ce post qui fonctionne.

    @Stéphane : Oui une solution plus propre serait mieux. Là j'ai juste voulu donner une solution simple à mettre en place. Je vais regarder pour le mettre en natif.
  • StéphaneStéphane Member, Former PluXml Project Manager
    d'ailleurs plutot que de proproser ce genre de solution, il faudrait peut etre d'abord regarder pourquoi on se retrouve avec des urls du type

    monsite.com/article1/poussin-jaune
    monsite.com/article1/

    si c'est à cause de pluxml, on corrige, parce que je suis pas certain que le genre de patch proposé soit la solution à tous les problèmes. d'ailleurs au passage ce genre de duplicate content est surement aussi valable pour

    monsite.com/static1/statique-1
    monsite.com/static1/

    monsite.com/categorie1/rubrique-1
    monsite.com/categorie1/

    donc on en fini plus de patcher

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • hamoudihamoudi Member
    juillet 2011 modifié
    Oui en effet c'est le même problème pour:
    monsite.com/static1/statique-1
    monsite.com/static1/
    Dans l'attente je vais adapter le patch pour static et categorie

    de laa façon suivante:

    Pour static
    .
    # Anti doublon :
    if(preg_match('/^static([0-9]+)\/?$/',$plxMotor->get)) {
    
        $a=0;
        while(!preg_match('#^' . str_pad(preg_replace('/^static([0-9]+)\/?$/', '\1', $plxMotor->get),4,'0',STR_PAD_LEFT) . '\.#', $plxMotor->plxGlob_arts->aFiles[$a]))
            $a++;
    
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: ' . $plxMotor->urlRewrite('?static' . preg_replace('/^static([0-9]+)\/?$/', '\1', $plxMotor->get) . '/' . preg_replace('#\d{4}\.\d{3}\.\d{3}\.\d{12}\.([a-z-]+)\.xml$#', '\1', $plxMotor->plxGlob_arts->aFiles[$a])));
        exit;
    }
    
    .

    Et

    Pour categorie
    .
    # Anti doublon :
    if(preg_match('/^categorie([0-9]+)\/?$/',$plxMotor->get)) {
    
        $a=0;
        while(!preg_match('#^' . str_pad(preg_replace('/^categorie([0-9]+)\/?$/', '\1', $plxMotor->get),4,'0',STR_PAD_LEFT) . '\.#', $plxMotor->plxGlob_arts->aFiles[$a]))
            $a++;
    
        header("HTTP/1.1 301 Moved Permanently");
        header('Location: ' . $plxMotor->urlRewrite('?categorie' . preg_replace('/^categorie([0-9]+)\/?$/', '\1', $plxMotor->get) . '/' . preg_replace('#\d{4}\.\d{3}\.\d{3}\.\d{12}\.([a-z-]+)\.xml$#', '\1', $plxMotor->plxGlob_arts->aFiles[$a])));
        exit;
    }
    
    .


    Et placer le tout dans index.php juste après:
    .
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
    .


    C'est bien cela?

    Merci beaucoup

    Merci beaucoup
  • amoweb a écrit:
    # Anti doublon :
    if(preg_match('/^article([0-9]+)\/?$/',$plxMotor->get)) {
    
    	$a=0;
    	while(!preg_match('#^' . str_pad(preg_replace('/^article([0-9]+)\/?$/', '\1', $plxMotor->get),4,'0',STR_PAD_LEFT) . '\.#', $plxMotor->plxGlob_arts->aFiles[$a]))
    		$a++;
    
    	header("HTTP/1.1 301 Moved Permanently");
    	header('Location: ' . $plxMotor->urlRewrite('?article' . preg_replace('/^article([0-9]+)\/?$/', '\1', $plxMotor->get) . '/' . preg_replace('#\d{4}\.\d{3}\.\d{3}\.\d{12}\.([a-z-]+)\.xml$#', '\1', $plxMotor->plxGlob_arts->aFiles[$a])));
    	exit;
    }
    
    Voilà, c'est à placer dans index.php juste après
    $plxMotor->prechauffage();
    $plxMotor->demarrage();
    
    J'ai tenté de mettre en place ton Patch mais j'ai l'impression que cela ne régle pas le problème.
    En effet quand je tente maintenant d'aller sur ma page par l'url: www.monsite/article1/
    J'arrive bien sur ma page mais l'url devient:
    monsite.com/article2/0002.home#,003.001.201107131635.poussin-jaune.xml
    Donc cela génère une url supplémentaire...

    Une autre idée:
    Peut-être est il possible par un bout de code d'interdire radicalement l'accés à une page par une url du type: www.monsite/article1/ ?

    Merci
  • Oui, j'avais fais une erreur dans le code (j'ai mis le correctif dans mon premier post). Donc normalement ça devrait te rediriger vers le lien complet tout en envoyant une erreur 301 aux moteurs de recherches qui leur dit de ne prendre en compte que le lien complet.

    C'est vrai qu'il faudrait appliquer le truc aux autres types de pages. Personnellement je l'ai appliqué à mon site, même si ça corrige pas le problème à la base (pourquoi ces liens incomplets sont générés), ça devrait corriger le problème sur les moteurs de recherches. Pour ne pas être pénalisé pour les doublons.
  • amoweb a écrit:
    Oui, j'avais fais une erreur dans le code (j'ai mis le correctif dans mon premier post). Donc normalement ça devrait te rediriger vers le lien complet tout en envoyant une erreur 301 aux moteurs de recherches qui leur dit de ne prendre en compte que le lien complet.

    C'est vrai qu'il faudrait appliquer le truc aux autres types de pages. Personnellement je l'ai appliqué à mon site, même si ça corrige pas le problème à la base (pourquoi ces liens incomplets sont générés), ça devrait corriger le problème sur les moteurs de recherches. Pour ne pas être pénalisé pour les doublons.
    Super J'ai testé et cela marche très bien! Super boulot merci pour moi mais aussi pour tous les autres...
    Comment sais-tu que l'url incompléte renvoie une erreur 301 au moteurs?
  • Salut Je viens de constater un dysfonctionnement...
    La redirection ne se fait pas vers l'article avec l'url compléte mais vers l'url du dernier article posté sur le site.
    Le plus simple peut-être serait de faire que l'url incompléte mène vers une page d'erreur. Est-ce possible?

    Penses-tu aussi qu'il soit possible d'adapter ce code pour les pages statiques et les catégories?

    Merci
  • Non si on redirige vers une page d'erreur, ça risque d'empêcher certaines choses (comme la lecture des commentaires).

    Sur mon blog, mon code fonctionne. C'est étrange, mais je l'ai fais assez rapidement...
    En même temps, je ne sais pas si les moteurs de recherches pénalisent vraiment le duplicat content. En tout cas, j'ai des articles très bien référencés.

    Je ne sais pas si j'aurai le temps de débugger mon code.

    On peut adapter ce code pour les autres bien sûr.
  • amoweb a écrit:
    Non si on redirige vers une page d'erreur, ça risque d'empêcher certaines choses (comme la lecture des commentaires).

    Sur mon blog, mon code fonctionne. C'est étrange, mais je l'ai fais assez rapidement...
    En même temps, je ne sais pas si les moteurs de recherches pénalisent vraiment le duplicat content. En tout cas, j'ai des articles très bien référencés.

    Je ne sais pas si j'aurai le temps de débugger mon code.

    On peut adapter ce code pour les autres bien sûr.
    Désolé c'est moi qui ai fait une mauvaise manip...
    J'ai essayé d'adapter ton code pour les pages statiques et les catégories... Dans un premier temps ça faisait dysfontionner le code pour les articles puis je me suis retrouvé avec un page d'erreur 500...
    J'avais dû mal adapter ton code pour les pages statiques et les catégories...

    Peux-tu stp adapter ton code pour les pages statiques et les catégories? Merci...
  • Bonjour,

    heu, google(et les autres) ne devinent pas les URL, il ne suivent que les liens qu'on leur donne.
    Le "moteur" produit toujours le même type d'url . (mode + numéro +/titre-pour-faire-plus-clair)
    (Et en plaçant le titre de page derrière un dièse plutôt qu'un slash ... :) )

    Ce mode de fonctionnement de PluXml a déjà a plusieurs reprises été débattu ou évoqué.
    Je m’inquiéterais plutôt du cas ou j'activerais l'URL Rewriting sur un site déjà bien référencé.
    (Faut-il alors mettre un 301 pour l'URL non réécrite ?)

    Cordialement, GC


    Cordialement,
    gcyrillus , simple membre du forum et utilisateur de pluxml

    Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | demos sur free http://gcyrillus.free.fr/new | Thèmes: tester et télécharger @ https://pluxthemes.com
    Indiquez [RESOLU] dans le titre de votre question une fois le soucis réglè, Merci

  • jpfleuryjpfleury Member
    août 2011 modifié
    heu, google(et les autres) ne devinent pas les URL, il ne suivent que les liens qu'on leur donne.
    Le "moteur" produit toujours le même type d'url . (mode + numéro +/titre-pour-faire-plus-clair)
    Dans la liste des derniers commentaires, les liens sont sous la forme article1/#id-commentaire. Idem pour le lien permanent de chaque commentaire (par exemple le lien du texte cliquable #1).

    Les moteurs de recherche connaissent donc à tout le moins deux URL différentes pour un même article.
  • hamoudi a écrit:
    Mes articles (avec Url rewritée) sont maintenant accessibles par 3 urls :
    monsite.com/article1/poussin-jaune
    monsite.com/article1/
    monsite.com/article1/poussin-jaune.html
    Il y a aussi avec ou sans point d'interrogation:

    monsite.com/?article1/poussin-jaune
    monsite.com/?article1/
    monsite.com/?article1/poussin-jaune.html

    Aussi, n'importe quoi peut suivre article1/ et ça va quand même lier vers la même page:

    monsite.com/article1/abc
    monsite.com/article1/a/b/c
  • Salut !

    Ou en est-on actuellement ?

    Quel code est à utiliser pour éviter le duplicate-content ?

    Merci de votre aide ;) .
Connectez-vous ou Inscrivez-vous pour répondre.