14

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

404 未找到

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

410 走了

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

410 响应的主要目的是通过通知接收者资源故意不可用并且服务器所有者希望删除到该资源的远程链接来协助 Web 维护任务。这种事件对于限时促销服务和属于不再在服务器站点工作的个人的资源很常见。不必将所有永久不可用的资源标记为“已消失”或将标记保留任意时间——这由服务器所有者自行决定。

谢谢,

4

3 回答 3

12

显示 410 比 404 需要更多的努力,因为要知道它是 410,您需要在数据库中至少维护前一页的“幽灵”。如果这对您来说不是问题,我会考虑 410“更好”和“更友好”,因为它提供了更多信息。如果您不想为在数据库中维护墓地而烦恼,那么当然也可以接受 404。

我不喜欢 Alohci 重定向到不同页面的方法。最终结果看起来用户意外地进入了“输入新主题”页面(或其他任何内容)。这可行,但我认为更好的解决方案是创建一个自定义 410 页面(或 404 页面,如果您不想支持 410),其中包含手头案例的特定信息。即您的 410 不应该只是说“已删除”,而应该说“此帖子已被删除,这是指向类似帖子的链接或创建新帖子的链接”。您的“404”不会提供那么多信息,但它仍然可以提供此类信息和链接的子集。

我猜“自定义 410 页面”在外观上与“使用 301 重定向”很接近,但一个重要的区别是您网站的机器人用户(其中​​有很多!)将获得更准确的状态,并且知道清除旧的来自他们的抓取索引的链接——这最终会为他们和你节省一些不必要的流量。

于 2009-12-06T12:35:38.620 回答
4

我认为正确的方法是发送 410 Gone 一段时间,然后在几周/几个月后切换到 404 Not found。当然,由您决定是否值得花费大量时间和精力。

于 2009-12-06T10:58:07.460 回答
0

两者都不。由于您将问题标记为“SEO”,因此我假设您想要最好的 SEO 答案。如果您删除的主题有任何反向链接(来自外部站点),则所有“链接汁”都将丢失,状态为 404 和 410。

相反,您绝对应该创建一些指向站点根目录、论坛根目录或相关类别的 301 重定向。因此,您将保留链接汁,并决定您网站的哪些页面将受益最多。

于 2009-12-06T13:11:09.347 回答