Gérer le duplicate content

Salut!

Un des gros problèmes de PluXml est sa mauvaise gestion des URLs. Sa gestion actuelle (5.1.3) permet de dupliquer à l'infini le nombre d'URLs pour une page donnée.

Exemple:
1. /article56/ <- un bug? un oubli?
2. /article56/plxeditor-1-2-ajout-d-un-bouton-smilies <- ce que l'utilisateur a choisi
3. /article56/plxeditor-1-2-ajout-d-un-bouton-smileys <- un fan qui ne sait pas recopier un mot
4. /article56/je-suis-devil <- un concurrent malhonnête
Actuellement, si j'ai bien compris, PluXml a besoin de:

article et de 56 pour afficher la bonne page : article pour savoir de quoi on a affaire, et de 56, l'id de l'article en question. Puis, là, catastrophe, PluXml ajoute l'url que le rédacteur a choisi sans aucune vérification, afin de rendre plus user friendly et permettre ainsi aux visiteurs de connaître partiellement le thème de la page sans même la visiter.

Idéalement, ce serait donc de :
- permettre aux visiteurs de prendre connaissance du contenu de la page juste par l'url
- permettre aux rédacteurs de changer l'url (faute d'ortho, erreur involontaire) sans casser les liens si l'article en question a été lié entre temps
- empêcher une infinité d'urls valides

Je propose:
- PluXml cherche le type de page demandé (article) et cherche l'article recherché (56), et après cela, il cherche l'url choisi (plxeditor-1-2-ajout-d-un-bouton-smilies). Si les 3 conditions sont remplies, la page est retournée sans autre
- Et si seules les deux premières conditions sont remplies (type de page demandé valable, et l'article 56 existe), mais l'url qui suit est faux, PluXml ajoute une redirection 301 vers l'url actuelle de la page renseignée dans l'admin

Avantages:
On peut garder sans problème des urls user friendly (et seo friendly), les rédacteurs indécis pourront toujours changer l'url de leurs articles sans jamais casser les liens (puisque l'ancienne url sera redirigée en header 301 vers la nouvelle url, en somme tout à fait logique). Et l'infinité des urls est convertie en une infinité de redirection. Je ne sais pas quelle implication cela aura sur le référencement, mais niveau utilisateur, aucun impact.
Et surtout, je pense pas que cela va perturber (pas autant que mon alignement à gauche ^^) l'architecture de base de PluXml, et la modification suggérée ne doit pas être trop difficile à faire, je pense.

Voilà, à vous de voir si cela sera acceptée ou pas :)

Réponses

  • Salut Yuston,

    Donc, j'avais réfléchie au problème il y a quelques temps :
    J'avais donné une solution sur ce post : http://forum.pluxml.org/viewtopic.php?pid=19158#p19158

    Mais il faut la prendre avec des pincettes, je ne l'ai pas testé en plein. De plus il y a un problème connu avec les commentaires qui génèrent des url de type ?article42/#cid... .
  • Hello,

    Je ne parle pas exclusivement de l'url rewriting, mais la manière de gérer les url de PluXml en général. Car, même sans rewriter les urls, on est confrontés aux urls multiples puisque PluXml n'introduit pas une condition qui vérifie que l'url "théorique" soit égale à l'url "dans la barre d'adresse".

    Du coup, sans rewriting on a:
    1. /index.php?article56/ <- un bug? un oubli?
    2. /index.php?article56/plxeditor-1-2-ajout-d-un-bouton-smilies <- ce que l'utilisateur a choisi
    3. /index.php?article56/plxeditor-1-2-ajout-d-un-bouton-smileys <- un fan qui ne sait pas recopier un mot
    4. /index.php?article56/je-suis-devil <- un concurrent malhonnête
    
    Il suffirait d'avoir une seule condition supplémentaire du genre: (code fictif car pas eu le temps de me plonger dans la classe plxMotor)
    //On suppose $id_article existe et correspond bien à un article publié
    if($mode == 'article' AND isset($id_article)){
    	if($_GET['url'] == $url_article){
    		return article_truc;
    	}
    	else{
    		header("HTTP/1.1 301 Moved Permanently");
    		header("Location: $mode.$id_article/$url_article");
    	}
    }
    else{
    	$this->get = 404;
    }
    
    Un truc comme ça quoi ^^
    Après faudra appliquer ce genre de vérification pour tous les autres modes de PluXml (catégorie, statique, etc.)
  • ou aussi:

    mon-domaine.fr/index.php?param1=mon-param1&param2=mon-param2
    en URL rewriting: mon-domaine.fr/param1/param2

    avec ( dans l'esprit ):
    if (
    in_array($_GET($param1), $table_categorie, true ) // true >> pour un genre de comparaison stricte ...
    AND
    in_array($_GET($param2), $table_article, true )
    ) {
    $mode == "categorie";
    affiche($article);
    } elsif (
    in_array($_GET($param1)=="archives")
    AND
    in_array($_GET($param2), $table_archives, true )
    ) {
    $mode == "archives";
    affiche($archive);
    } elseif {
    etc ...
    } else {
    $erreur;
    }
    
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour yuston

    Merci pour ces explications très claires et utiles
    J'ai mis à jour le svn avec une version qui gére les duplicate content à cause des ces urls.
    Restera à traiter les redirections 301 et 404

    Consultant PluXml

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

Connectez-vous ou Inscrivez-vous pour répondre.