Skip to main content Help Control Panel

Login   A+   A-

Community «   Le forum «   Besoin d'aide «  

Gestion des erreurs 404

Un code 200 est renvoyé quand on tente d'accéder à un ID qui ne correspond à rien.
Problem has been recorded

Issue description

J'ai constaté que YACS renvoyait un code 200 quand on tentait d'accéder à un document dont l'ID a été supprimé ou est inexistant.

Cela peut poser des problèmes, car si on supprime un article, son URL restera indexée dans les moteurs de recherche puisque ils ne recevront un code d'en tête 404 quand il tenteront d'y accéder.

Une illustration avec cette page : http://www.yetanothercommunitysystem.com/yacs/sections/view.php/41

Elle est vide, mais reçoit un lien externe (depuis ici : http://www.framasoft.net/article4283.html) Elle est indexée par Google et n'a pas été éliminée.

Joomla, Typo3, SPIP posent le même problème, mais il y a des solutions (souvent tordues) pour le régler. Y a t'il un moyen de renvoyer un code 404 sous YACS ?

Comments

GnapZ
from Caribbean
2970 posts

on May 8 2007


Bonne question ! Il faudra se pencher là dessus. J'espère simplement qu'il existe une méthode d'envoi de code erreur de PHP vers Apache.

Je crois me souvenir que dans le .htaccess livré avec Yacs il doit y avoir des instructions de renvoi d'erreurs. Il me semble aussi que l'on doit pouvoir générer ses propres pages d'erreurs.

A suivre ...
Bernard
avatar
from nearby-an-airport
Associate, 6732 posts

on May 13 2007


Bonne idée. J'ai rajouté un code 404 dans tous les scripts view.php lorsque l'identifiant fourni n'est pas trouvé. A l'écran, rien de change, ni pour FF2, ni pour IE7. Mais pour les moteurs de recherche, ceci devrait faire une grosse différence. Merci de cette contribution, qui sera intégrée dès la prochaine version 7.5alpha.
ThierryP
avatar
from Nice, Drap
Associate, 1221 posts

inspired from Bernard on May 21 2007


Bernard :

En parlant de redirection, ne serait-il pas plus indiqué de fournir plutôt un code 301 ou "redirection permanente" vers la page d'accueil ?

Google comme beaucoup de moteur de recherche se fâche facilement quand trop d'url renvoit vers une "erreur 404"

Et puis tiens, soyons fou ! Les pages réservées et non accessible au public (comme Mr Google par exemple) ne pourrait-elle pas être accréditées d'un petit code 302 (redirection temporaire) vers la page d'accueil ? Cela permet, en tout cas du point de vue performance référencement, de booster la page d'accueil au lieu de page qui n'ont pas de raison d'être vue.

Après tout, n'oublions pas que le but du référencement est de mettre les pages les plus pertinentes en haut des résultats...
GnapZ
from Caribbean
2970 posts

inspired from ThierryP on May 21 2007


ThierryP :

Normalement, les accès aux pages réservées et non accessible au public ne sont pas censées le devenir alors pourquoi une redirection "temporaire" ?

De plus, elles sont déjà redirigées vers la page d'authentification, non ?
Le_ffrench
avatar
from Val de Marne
4 posts

on May 22 2007


La meilleure façon de gérer ces erreurs est d'utiliser les en-têtes de la façon dont elles ont été prévues.

Un document n'existe pas ou n'existe plus -> 404 Un document a été déplacé -> 302 Il faut se logguer pour voir un doc -> 401

Gérer des 404 par une 302 sur la home n'est pas une bonne solution :
  • la page demandée à l'origine ne sera pas retirée des résultats des moteurs rapidement. Or les moteurs n'ont pas un espace disque illimité pour stocker des infos sur des documents qui n'existent plus et ça n'a pas d'intérêt pour le site lui même.
  • les internautes ne comprendront pas pourquoi ils atterissent sur la home alors qu'ils tentent d'accéder à une page interne
  • il n'est pas certain qu'une redirection 302 transmette correctement de la popularité à une page. Pour booster la home, il suffit de faire des liens directs dessus et en général ça ne manque pas sur un site (logo, chemin de fer...)


Le traitement des 404 (et des autres en-têtes serveur) fait partie des bonnes pratiques qui permettent de gérer l'indexation sur les moteurs.
GnapZ
from Caribbean
2970 posts

on May 22 2007


Tout à fait d'accord, ça respecte tout le monde: le site, les standards, les référenceurs, etc.

Ces redirections apache sont faites pour ça mais la question était de savoir à quel type de document on les applique et quelle redirection utiliser plutôt qu'une autre lorsqu'il y a plusieurs solutions.
Bernard
avatar
from nearby-an-airport
Associate, 6732 posts

on May 24 2007


Comme indiqué précédemment tout est dans le standard HTTP. Pour faire bonne mesure, j'ai changé la plupart des scripts pour tenir compte des interdictions d'accès, comme par exemple dans articles/view.php :

...

// not found -- help web crawlers
if(!isset($item['id'])) {
    
Safe::header('Status: 404 Not Found');
    
Skin::error(i18n::s('No article has the provided id.'));

// permission denied
} elseif(!$permitted) {

    
// anonymous users are invited to log in or to register
    
if(!Surfer::is_logged())
        
Safe::redirect($context['url_to_home'].$context['url_to_root'].'users/log
    in.php?url='
.urlencode(Articles::get_url($item['id'])));

    
// permission denied to authenticated user
    
Safe::header('Status: 403 Forbidden');
    
Skin::error(i18n::s('You are not allowed to perform this operation.'));

// display the article
} else {
 ...



La redirection est limitée à l'authentification des surfeurs anonymes. Peut-être faudrait-il qualifier cette redirection à l'intention des moteurs de recherche ?

Rate this page
Posted by Le_ffrench on May 8 2007, commented by Bernard on May 24 2007, (popular)