Gestion des erreurs/pages introuvables

Pierrot14Pierrot14 Member

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 pour PluXml : https://github.com/gcyrillus }-))))°> ♣♣♣♣

  • 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 pour PluXml : https://github.com/gcyrillus }-))))°> ♣♣♣♣

  • 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 pour PluXml : https://github.com/gcyrillus }-))))°> ♣♣♣♣

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