我应该发送状态为404还是200?

时间:2010-02-10 01:53:27

标签: ruby-on-rails

我正在使用Rails构建Web应用程序。如果没有为网址http://example.com/city/non_existant_city找到记录,那么我有以下代码。

 render :text => "record was not found", :status => :not_found

在Firefox中我看到了消息。

在chrome(在Mac上)我看到一个chrome 404页面,此页面不会显示我发送的消息。

这让我想知道我应该发送状态为200.我发送404以便网络抓取工具可以理解这个链接一直返回404所以一段时间后放弃该链接。

3 个答案:

答案 0 :(得分:7)

您应该使用404.抓取工具不仅会停止访问无效链接,而且如果它是404页面,您也不会因重复内容而受到处罚,就像它是200页一样。

对于Chrome,如果内容太短(少于~520个字符),它只会替换404页

请参阅:http://perso.hirlimann.net/~ludo/blog/archives/2008/09/chrome-and-404s.html

答案 1 :(得分:1)

如果您告诉最终用户该页面不存在,请发送404.

如果您告诉最终用户该页面存在,但他们要查找的记录没有,则创建一个普通页面(200)并在其中显示错误消息。

许多浏览器显示“友好”的404页面,这就是为什么你没有看到你的消息。

答案 2 :(得分:1)

不能找到记录是否常见?例如,人类是否输入城市名称然后,如果找不到名称,您可以给他们替代品吗?如果是这样,那么我将返回一个包含新查询框等的200页

如果这是一个Web服务,那么如果您希望api在这种情况下返回所有“未找到”,那么404就可以了。但是如果你想让你的api另外返回其他信息,那么200(加上一个不成功的错误代码和其他信息)是要走的路。