2010-03-30 22 views
1

Je rebondis entre poster ici et sur Superuser. S'il vous plaît excusez-moi si vous sentez que cela n'appartient pas ici.Comment retourner correctement 404 pour google tout en fournissant un contenu convivial à l'utilisateur?

J'observe le comportement décrit here - Googlebot demande des URL aléatoires sur mon site, comme aecgeqfx.html ou sutwjemebk.html. Je suis sûr que je ne relie pas ces URL de n'importe où sur mon site.

Je soupçonne que ce peut être google sondait la façon dont nous traitons le contenu non existant - citer d'une réponse à la question liée:

[google is requesting random urls to] see if your site correctly 
handles non-existent files (by returning a 404 response header) 

Nous avons une page personnalisée pour le contenu inexistant - une page de style disant « contenu pas trouvé, si vous croyez que vous êtes arrivé par erreur, s'il vous plaît contactez-nous ", avec quelques liens internes, servi (naturellement) avec un 200 OK. L'URL est servie directement (pas de redirection vers une seule URL). Je crains que cela puisse discriminer le site de google - ils ne peuvent pas interpréter la page conviviale comme 404 - not found et peuvent penser que nous essayons de faire semblant et de fournir du contenu en double.

Comment dois-je procéder pour s'assurer que google ne pensera pas que le site est bidon tout en fournissant un message convivial aux utilisateurs au cas où ils cliquent sur des liens morts par accident?

Répondre

6

La meilleure pratique serait de retourner à l'utilisateur conviviale 404 avec un code de réponse 404, pas 200. Votre serveur web doit gérer pour vous relativement facilement.

+0

merci, je ne savais pas à ce sujet. Je vais apprendre à retourner 404 tout en servant du contenu – Marek

+0

Comment retourner le code d'état 404 tout en servant du contenu dans ASP.NET MVC: Response.StatusCode = 404; Response.TrySkipIisCustomErrors = true; retour Voir(); – Marek

2

Vous pouvez toujours envoyer un état 404 et fournir des messages conviviaux pour les liens morts dans la même réponse. Même les "utilisateurs normaux" devraient obtenir le statut 404 même si la page ne ressemble pas à votre page d'échec typique. La façon dont vous interceptez la requête dépend de votre serveur Web. Cela va être beaucoup plus facile que de détecter l'agent utilisateur et de faire quelque chose de différent pour Googlebot.

2

Utilisation ErrorDocument dans apache

ErrorDocument 500 http://foo.example.com/cgi-bin/tester 
ErrorDocument 404 /cgi-bin/bad_urls.pl 
ErrorDocument 401 /subscription_info.html 
ErrorDocument 403 "Sorry can't allow you access today" 

Le document d'erreur peut être tout ce que vous voulez. Ex si vous utilisez PHP, vous pouvez créer un fichier appelé error404.php comme ceci:

<?php 
header("HTTP/1.0 404 Not Found"); 

echo 'Hi, this page does not exist...<img src="nice-logo.png" alt="logo" />' 


?> 

La seule chose qui est important est que la réponse doit inclure un code 404 correct dans l'en-tête - Apache émis par , PHP ou tout autre script dynamique.

Exemple drôle 404: http://www.northernbrewer.com/brewing/weekly_fermenterd