david96 a écrit:J'ai eu une grande discussion avec un pote qui est aussi inscrit sur ce forum !
Pour lui une page qui n'existe plus doit avoir le protocole 404. Point barre.
Ton pote n'a pas tord
Enfin si, un peut ...

(voir ci-dessous le pourquoi)
Lorsque l'on parle de protocole, la seule source fiable à ce sujet ce sont les RFC. Et voilà ce que dit la RFC (interprétation faite par moi-même, je vous invites à aller consulter l'original : RFC 2616)
301 "Moved Permanently" (déplacé de façon définitive). La ressource demandé n'existe plus et cela retourne une URL qui indique où retrouver ce MEME contenu. Si il s'agit d'une annonce d'emploi qui n'existe plus, faire un
301 vers la page qui permet de rechercher d'autres annonces *N'EST PAS UNE UTILISATION CORRECTE DU 301*. La dite annonce (la ressource recherché) n'ayant pas été déplacé de façon définitive dans le formulaire de recherche ! En gros imagine la situation suivante : Tu vas chez le boulanger "Bonjour, une baguette SVP". Le boulanger répond "désolé il est 19h00 et c'était notre dernier jours, on ferme. On à fait fortune on part donc vivre a Bora-Bora. Mais allez donc voire chez votre concessionnaire automobile !"
404 "Not found" Le serveur n'a pas réussis à trouver quelque choses qui correspond à cette URL. Par contre le 404 ne donne pas d'indication temporelle : *CE N'EST PAS* un Not Found permanently. Pour le client (Browser, robot indexer, etc ...) qui reçoit un 404 ça lui dit juste qu'a cet instant, le serveur n'a rien trouvé (genre, tu as effacé un fichier par mégarde du serveur que tu vas t'empresser de restaurer de ton backup).
410 "Gone" C'est là où je me suis planté. Dans ton cas, ce n'est pas un 404 mais bien un 410 qu'il faudrait utiliser. Le 410 c'est un 404 permanent. Ca dit clairement qu'a l'adresse indiqué il y avait bien quelque chose mais que maintenant la ressource n'est plus là et qu'elle ne sera plus jamais là.
Donc cela expliquerais peut-être pourquoi Google est lent à dé-indéxer les pages 404 : parce qu'il suit la RFC. Il va réessayer plusieurs fois un 404 (n'ayant pas d'indication pour savoir si le Not Found est permanent ou temporaire).
Donc d'après mon interprétation de la RFC :
* Si un utilisateur demande une annonce qui n'a jamais existé (genre URL trafficoté à la main) -> 404
* Si un utilisateur demande une annonce qui à existé mais qui à été pourvu -> 410
Après rien n'empêche de faire des jolies pages 404/410 genre
http://www.alpesautodiscount.com/rien-ici (qui a d'ailleurs une jolie faute d'orthographe

). L'utilisateur aura moins l'impression d'avoir "tout cassé"
Alors la question subsidiaire va être : Comment savoir si 404 ou 410 si je fait un DELETE FROM annnonces where id=<annoncepourvu> ? La réponse est tu ne peux pas

Il faut changer ta façon de faire, par exemple au lieu de faire un DELETE tu fais un UPDATE ... SET deleted=true,since=<date>;
Dans ta fonction qui affiche une annonce, tu récupères l'annonce selon son id, puis :
si deleted == true => 410
si deleted == false => 200
si rien trouvé => 404
Et tu supprimeras les annonces après un délai raisonnable (1/3/6 mois ?) DELETE annonces WHERE deleted=true AND since < Aujourd'hui - 1/3/6 mois. Les URL de ces annonces re-retourneront alors des 404.
En espérant avoir été clair et d'avoir fait avancé le schmilblik.