代码之家  ›  专栏  ›  技术社区  ›  Marek

在为用户提供用户友好内容的同时,如何为谷歌返回正确的404?

  •  1
  • Marek  · 技术社区  · 14 年前

    我在这里和超级用户之间来回转载。如果你觉得这不属于这里,请原谅我。

    我正在观察所描述的行为 here -谷歌机器人在我的网站上请求随机的网址,比如 aecgeqfx.html sutwjemebk.html . 我确信我不会从我的站点上的任何地方链接这些URL。

    我怀疑这可能是谷歌在探索我们如何处理不存在的内容——从链接问题的答案中引用:

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

    我们为不存在的内容定制了一个页面——一个样式化的页面,上面写着“找不到内容,如果您认为您是错误的,请联系我们”,带有一些内部链接,服务对象(自然)是 200 OK . 该URL直接提供服务(不重定向到单个URL)。

    我担心这可能会歧视谷歌的网站-他们可能不会将用户友好的页面解释为 404 - not found 可能会认为我们试图伪造一些东西并提供重复的内容。

    我应该如何继续,以确保谷歌不会认为该网站是伪造的,同时提供用户友好的消息,以防用户点击死链接意外?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Jacob Mattison    14 年前

    最佳做法是返回用户友好的404页面,其中包含404响应代码,而不是200。您的Web服务器应该相对容易地为您处理这个问题。

        2
  •  2
  •   Vidar Vestnes    14 年前

    在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"
    

    错误文档可以是您想要的任何内容。例如,如果您使用的是PHP,您可以创建一个名为error404.php的文件,如下所示:

    <?php
    header("HTTP/1.0 404 Not Found");
    
    echo 'Hi, this page does not exist...<img src="nice-logo.png" alt="logo" />'
    
    
    ?>
    

    唯一重要的是 响应必须在头中包含正确的404代码 -由apache、php或任何其他动态脚本输出。

    有趣的404例子: http://www.northernbrewer.com/brewing/weekly_fermenterd

        3
  •  2
  •   brian d foy JRFerguson    14 年前

    您仍然可以发送404状态,并为同一响应中的死链接提供用户友好的消息。即使“普通用户”也应该获得404状态,即使页面看起来不像典型的失败页面。拦截请求的方式取决于您的Web服务器。这比检测用户代理和为GoogleBot做一些不同的事情要容易得多。