[Résolu] Gestion des erreurs/pages introuvables

Pierrot14Pierrot14 Member
26 mai modifié dans Entraide

Hello les Pluxmler !

J'ai une petite question concernant la gestion des pages ayant des urls qui ne correspondent pas au schéma défini dans Pluxml.

Je précise, en gros sur certains de mes sites, j'ai des urls du 'passé' du style :-1:

https://www.monsite.fr/dossier/sous-dossier/page.php

Mon Pluxml est configuré 'classiquement' avec MyBetterUrls et url rewrite activé >>> /articles/mapage.htm

Le soucis c'est quand un internaute 'arrive' sur une des anciennes urls, au lieu de se prendre une 404 des familles OU la page d'erreur de Pluxml, c'est la Home qui se charge

Le risque > duplicate content.

Quelqu'un a un tips pour celma car je n'ai rien trouvé sur le forum ou sur GG.

Merci

Pierre

Réponses

  • Bonjour,

    j'ai la même question, en tapant n'importe quelle url bidon, on retombe sur la page d'accueil
    Ex: //monpluxml.com/hellotheworld

    A quel endroit du script de pluxml faut-il regarder et modifier ce comportement par défaut . Genre if root but uri not root then 404 + request_uri ?

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • 16 mai modifié

    Je commence à nous repondre :)
    @Pierrot14

    Une première étape est peut-être de modifier la valeur de $this->get si le filtrage ne correspond à aucun mode dans class.plxMotor.php ligne 133 en remplaçant :

            if(!empty($this->get) and !preg_match('#^(?:blog|article\d{1,4}/|static\d{1,3}/|categorie\d{1,3}/|archives/\d{4}(?:/\d{2})?|tag/\w|page\d|preview|telechargement|download)#', $this->get))
     { $this->get =  ''; }
    

    par

            if(!empty($this->get) and !preg_match('#^(?:blog|article\d{1,4}/|static\d{1,3}/|categorie\d{1,3}/|archives/\d{4}(?:/\d{2})?|tag/\w|page\d|preview|telechargement|download)#', $this->get)) 
    { $this->get =  'error' ; /* ou ? $_SERVER['REQUEST_URI'] pour un eventuel traitement */; }
    

    qui pourra être traiter ultérieurement, ou par exemple repris dans la page erreur.php` d'un template pour un message plus spécifique.

    Cela est juste une proposition, un début de piste .

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • kowalskykowalsky Member

    Salut @Pierrot14
    C'est bizarre que tu ne tombes pas sur une 404 avec une url bidon.
    D'un autre coté, si tu as des url du passé, cela signifie sans doute que tu as installé ton PluXml à la place d'un ancien site. Avais-tu nettoyé le fichier .htaccess avant ta transition ? Sinon peut-être as-tu un bout de code de l'ancien site qui est lu avant celui utilisé par PluXml ?

    Le fichier .htaccess par défaut ressemble à cela :

    # BEGIN -- Pluxml
    Options -Multiviews
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /PluXml/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    # Réécriture des urls
    RewriteRule ^(article\d*|categorie\d*|tag|archives|static\d*|blog|page\d*|telechargement|download)\b(.*)$ index.php?$1$2 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    </IfModule>
    # END -- Pluxml
    

    Pour éviter les duplicates, tu as deux solutions (mais il ne faut en choisir qu'une) via le fichier .htaccess (si ton serveur est sous Apache) :

    1) Une redirection permanente vers le nouveau répertoire PluXml :

    #redirect
    Redirect permanent "/dossier/sous-dossier" "/articles"
    

    2) Une indication que l'ancien répertoire n'existe plus :

    #redirect
    Redirect gone "/dossier/sous-dossier"
    

    Lignes à placer avant la ligne "# BEGIN -- Pluxml"

  • 16 mai modifié

    @kowalsky cela fonctionne pour un dossier que tu sais ne plus exister , Dans le cas d'un hebergement ayant des années et dont le systeme de fichiers/repertoire et CMS à changer , il est quasi impossible de se souvenir de tous les dossier ou URL que les moteur de recherche ont patiemment enregistré et indexé (sans compter les favoris des internautes et liens externes) .

    Le defaut ou bug c'est que En activant l'url rewriting dans PluXml, tous les noms de dossiers peuvent potentiellement devenir des ressources si il n'existent pas ou plus mais ce ne sera pas non plus un article, ni une catégorie,ni un tag, ni ... et par défaut, pluxml va seulement afficher la page d'accueil.
    les 301 ou 404 sont vues si un mode est reconnue mais la ressource introuvable. Dans le cas d'une URL vers un dossier/fichier inexistant et ne correspondant a aucun mode connu de PluXml, c'est la page d'accueil qui s'affiche sans aucun message d'erreur. En gros chaque URL bidon ou obsolète affichera le même contenu que la page d'accueil. C'est le probleme de pierrot14

    Le soucis c'est quand un internaute 'arrive' sur une des anciennes urls, au lieu de se prendre une 404 des familles OU la page d'erreur de Pluxml, c'est la Home qui se charge

    Le risque > duplicate content.

    du coup en donnant une valeur autre que NULL as $this->get() , on renvoie assurement sur la page 404 de pluxml et on peut accessoirement y intégrer une page de recherche pour ne pas trop frustrer l'internanute et lui laisser l'occasion de retrouver la ressource si elle existe sous une nouvelle url ;)

    Cdt

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • 10 juin modifié

    @Pierrot14

    Bonjour, je viens aussi de remarqué (en bidouillant mon compteur de vue) que ce qui peut aussi créer du duplicate content en cas d'urlrewriting activé, c'est le fait qu'une page devient accessible par 2 uris
    ex emple: /index.php?article1/premier-article et /article1/premier-article

    On peut gérer cela en insérant une condition dans le fichier index.php à la racine de PluXml après la ligne 32:

    # Evite duplication de contenu (à insérer dans /index.php aprés la ligne 32)
    if( $plxMotor->aConf['urlrewriting']==1 && strpos(strtolower($_SERVER['REQUEST_URI']), 'index.php?' )==true)  {
        $newloc= str_replace('index.php?','',$_SERVER['REQUEST_URI']);
        $plxMotor->redir301($newloc);
    }
    

    Cdt

    Edit , Voici un article qui me conforte dans le choix d'une redirection 301 plutot qu'une url canonique dans ce cas de figure https://www.webrankinfo.com/dossiers/breves/redirection-301-ou-canonique

    evoqué aussi ici : https://www.webrankinfo.com/dossiers/techniques/url-canonique

    Et si vous devez corriger un problème de duplicate content, je pense qu'une bonne redirection 301 est plus efficace et d'ailleurs Matt Cutts était d'accord avec moi ;-)

    https://re7net.com

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

  • Pierrot14Pierrot14 Member

    Hello GCyrillus et kowalsky

    Merci pour vos réponses et votre temps !

    Alors effectivement @kowalsky le soucis ne vient pas d'un 'vieil' htaccess resté en berne sur le serveur car tout est neuf ;)

    @Cyrillus je teste ca demain pépère et je te dis, merci, mais effectivement le soucis pour un 'vieux' domaine ayant eu une ou plusieurs vies peut empêcher certaines personnes 'férues' de SEO de se servir de plux. Ce problème n'en est pas un sur un domaine tout neuf :) (enfin à ma connaissance ;)

  • Pierrot14Pierrot14 Member

    @GCyrillus, ca marche nickel ca affiche bien vers la page d'erreur, c'est parfait ! DU moins pour le duplicate content de la HP :)

    Bon ben maintenant je dois 'pimper' un peu mes pages d'erreur mais c'est exactement ce qu'(il me fallait !

    Encore merci et bon weekend :)

  • 28 juin modifié

    @Pierrot14
    Bonjour,
    Pour la gestion des pages erreur en 404 au lieu de Home , je viens de refaire un plugin qui ne nécessite pas de modifier à la main class.plxMotor.php (donc imperturbable à une mise à jour en principe) et qui permet quand même d'autoriser quelques url qui sont belle et bien supposées arrivées en page d'accueil (celle d'un sponsor ou d'un site commercial qui ajoute un requête dans l'url de base )
    https://github.com/gcyrillus/plxNewMode/tree/main

    description :

    1. Filtre et redirige toutes vos potentielles page 404 vers la page d'erreur (404) de pluxml au lieu de la page HOME.
    2. Sa configuration permet de rediriger vers la page d'accueil certaines pages 404 du à une requête $_GET non reconnue nativement par PluXml mais que vous validez comme acceptable en page d'accueil Cela peut-être une url (sponsorisée,amical,commerciale,..) du type monSite.com/index.php?visiteur=vient-du-site-de-mon-pote ou monSite.com/visiteur=vient-du-site-de-mon-pote qui sera accepté comme un accès valide à la page d'accueil

    Pourquoi s’inquiéter ou autoriser une requête $_GET inattendue ? faire un compromis entre deux situations aux solutions opposés : voir le sujet https://forum.pluxml.org/discussion/6336/rediriger-404-vers-index/p1 ou la solution est opposée a la problématique initiale ici, en fait c'est probablement l'origine de ce défaut ;)

    ♣♣♣♣ <°(((((-{ ~ Mon site avec PluXml: https://re7net.com | Mes plugins : https://github.com/gcyrillus PluXml 5.8.7 sur free ? oui c'est possible : http://gcyrillus.free.fr/new }-))))°> ♣♣♣♣

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