当主题被删除时,我应该使用404 Not found还是410 Gone for a bulletin board system?

13 seo http http-status-codes http-status-code-404 http-status-code-410

我正在创建一个公告板系统,现在我正在为管理员实现一个"删除主题"功能.如果有人打开已删除的主题,服务器找不到它,所以它必须是404.另一方面,主题已经存在,所以我必须使用410.实现410将需要一个名为deleted_topics的新表,所以会需要更多空间.但是,410我觉得搜索引擎更好.你怎么看?我应该使用404还是410?

404未找到

服务器未找到与Request-URI匹配的任何内容.没有说明该病症是暂时的还是永久性的.如果服务器通过一些内部可配置的机制知道旧资源永久不可用且没有转发地址,则应该使用410(Gone)状态代码.当服务器不希望确切地说明请求被拒绝的原因,或者没有其他响应适用时,通常会使用此状态代码.

410已经走了

请求的资源在服务器上不再可用,并且不知道转发地址.预计这种情况将被视为永久性的.具有链接编辑功能的客户端应该在用户批准后删除对Request-URI的引用.如果服务器不知道或无法确定条件是否是永久性的,则应该使用状态代码404(未找到).除非另有说明,否则该响应是可缓存的.

410响应主要用于通过通知接收方资源是故意不可用的以及服务器所有者希望移除到该资源的远程链接来辅助web维护的任务.这种事件对于限时,促销服务以及属于不再在服务器站点工作的个人的资源是常见的.没有必要将所有永久不可用的资源标记为"已消失"或将标记保留任何时间长度 - 这由服务器所有者自行决定.

谢谢,

Car*_*icz 12

显示410需要比404更多的努力,因为要知道它是410,您需要至少维护数据库中前一页的"重影".如果这对您来说不是问题,我会认为410"更好"和"更友好",因为它提供了更多信息.如果您不想在数据库中维护墓地,那么404也是可以接受的.

我不喜欢Alohci重定向到不同页面的方法.最终结果看起来像用户意外地在"输入新主题"页面(或其他)上结束.这是有效的,但我认为一个更好的解决方案是创建一个自定义410页面(或404页面,如果您不想支持410),并提供有关案例的具体信息.即你的410不应该只是说"走了",它应该说"这篇文章已被删除,这里是类似帖子的链接或创建新帖子的链接".您的"404"将没有足够多的可用信息,但它仍然可以提供此类信息和链接的子集.

我猜"自定义410页面"的外观接近于"用301重定向",但重要的区别在于您网站的机器人用户(其中​​有很多!)将获得更准确的状态,并知道清除旧的从他们的爬网索引链接 - 这将最终保存他们和你一些不必要的流量.

  • 301说,“这不是有效的链接,但是如果您遵循此重定向,则无论如何都会得到某种结果”。贪婪的爬行者会竭尽所能抓住它那毛茸茸的小爪子。410说:“什么也看不到,走开,别再烦了!” SE算法是许多争论的主题,但是可以合理地假设,更强的消息将更可能阻止爬虫。 (2认同)