我正在创建一个公告板系统,现在我正在为管理员实现一个“删除主题”功能。如果有人打开已删除的主题,服务器找不到它,因此它必须是404。另一方面,这个主题有时已经存在,所以我必须使用410。实现410需要一个名为deleted_topics的新表,因此需要更多的空间。不过,410我认为搜索引擎更好。你怎么认为?我应该用404还是410?
找不到404
服务器未找到与请求uri匹配的任何内容。没有迹象表明这种情况是暂时的还是永久的。如果服务器通过某种内部配置机制知道旧资源永久不可用且没有转发地址,则应使用410(gone)状态代码。当服务器不希望确切地显示请求被拒绝的原因,或者没有其他响应可用时,通常使用此状态代码。
410走了
请求的资源在服务器上不再可用,并且不知道转发地址。这种情况被认为是永久性的。具有链接编辑功能的客户端应在用户批准后删除对请求uri的引用。如果服务器不知道或无法确定条件是否是永久性的,则应改为使用状态代码404(未找到)。除非另有说明,否则此响应是可缓存的。
410响应的主要目的是通过通知接收者资源是故意不可用的并且服务器所有者希望删除到该资源的远程链接来协助web维护任务。这种活动在有限的时间、促销服务和属于不再在服务器站点工作的个人的资源中很常见。不必将所有永久不可用的资源标记为“已消失”,也不必将标记保留任何时间,这由服务器所有者自行决定。
谢谢,

最佳答案

显示410比显示404需要更多的努力,因为要知道它是410,您需要在数据库中至少维护前一页的“幽灵”。如果这不是你的问题,我会认为410“更好”和“更友好”,因为它提供了更多的信息。如果你不想在数据库中维护一个墓地,那么404当然也是可以接受的。
我不喜欢Alohci重定向到另一个页面的方法。最终的结果似乎是用户意外地进入了“输入新主题”页面(或其他页面)。这是可行的,但我认为一个更好的解决方案是创建一个自定义410页(或者404页,如果您不想支持410页的话),其中包含当前案例的特定信息。也就是说,你的410不应该只是说“不见了”,它应该说“这篇文章已经被删除了,这里有一个链接到类似的文章或者一个链接来创建一个新的文章”。你的“404”没有那么多可用的信息,但它仍然可以提供这样的信息和链接的子集。
我想“自定义410页面”在外观上与“301重定向”很接近,但一个重要的区别是你网站的机器人用户(其中有很多!)将得到更准确的状态,并知道从他们的爬网索引清除旧链接-这将最终节省他们和你一些不必要的流量。

09-10 16:32