为什么在404错误页面上有200 OK标题状态是不好的?

时间:2010-02-25 21:26:11

标签: http header http-status-code-404

我有一个问题我遇到了麻烦:/ err404页面的200OK标题状态问题,虽然它应该是404标题。 200好有什么问题?真有可能200 OK应该是404错误页面标题状态吗?

欣赏建议!!非常感谢!


我猜它与.htaccess有关。这是我的.htaccess文件;

ErrorDocument 404 /err404.html

RewriteEngine On

RewriteRule ^login.html$ index.php?s=login&a=loginDo [QSA,L]
RewriteRule ^logout.html$ index.php?s=login&a=logoutDo [QSA,L]
RewriteRule ^([^/]*).html$ index.php?s=$1 [QSA,L]
RewriteRule ^members/([^/]*)$ index.php?s=profile&username=$1 [QSA,L]
RewriteRule ^([^/]*)/$ index.php?s=listing&search[cityString]=$1 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?s=listing&search[neighborhoodString]=$2 [QSA,L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*).html$ index.php?s=details&seo_friendly=$3 [QSA,L]

我还有一些与此htaccess文件相关的麻烦:(

问题1;当网址类似于http://localhost/fdfcdcvdvdvbdf.html(不存在网址)时,它会重定向到主页,但它应该重定向到err404.html。对这个问题有什么看法吗?对于http://localhost/fdfcdcvdvdvbdf.hthttp://localhost/fdfcdcvdvdv

等网址,err404重定向效果很好

问题2; 如何解决这个200 OK问题:/

7 个答案:

答案 0 :(得分:20)

404值不仅仅是圣诞树装饰 - 它传达了有关网址的真实信息,即它不存在。发送描述页面不存在这一事实的200页是完全不同的事情,特别是对于程序而言,与人类相反。

答案 1 :(得分:6)

通过为丢失的页面返回200 OK状态,您可能会混淆浏览器(如果您没有自定义错误HTML,则可能不会显示错误消息)和搜索引擎(他们会开始索引某人告诉他们的任何内容,例如:example.com/this-web-site-is-terrible-use-our-competitor)...


关于mod_rewrite的编辑:
http://example.com/lsdjkldsjlk.html与您的第三个RewriteRule匹配,因此它会重定向到index.php。

您应该在index.php脚本中检测到没有与s参数相关的内容,并通过调用header()返回404状态。

答案 2 :(得分:3)

首先,您可能不希望搜索引擎索引您的404页面。

答案 3 :(得分:2)

嗯,HTTP的语义非常明确:如果在服务器上找不到请求的页面,则应发送404

此外,如果您不介意使用垃圾抓取/索引您的网站(当找不到网页时)......

答案 4 :(得分:2)

如果它返回200状态,则不是404错误页面。如果页面不可用(缓存,代理,脚本),失败的任何事情都不会失败并且随之而来的是混乱。此外,Google will hate you(因为垃圾网站会为任何查询返回200页。)只需返回该死的404错误。

答案 5 :(得分:1)

顺便问一下,你知道“404错误页面”中的404来自何处?这正是HTTP错误代码。

软件应该能够区分正确和错误的页面。如果您将包含“404”的页面作为图像发送,则任何软件都不会识别出错误。

答案 6 :(得分:1)

这是一个无障碍问题。 200 OK表示发出的资源是请求的资源。 404表示无法找到所请求的资源,并且发出的资源是错误页面。浏览器使用您发送的状态代码来了解一切是否正常。您可能没有注意到显示的页面与人类有任何差异,但爬虫需要知道这些事情(或者他们会将您的错误编入索引等)。