在使用Rails进行Agile Web开发的书中,建议当有人试图访问您网站中的某些数据并且该记录不再存在时,应该将用户重定向到工作页面并显示消息
用户将转到/ book / 1,但是不再存在ID为1的书,因此将其重定向到/ books并显示消息“该书不存在”。它似乎是一个很好的用户体验,但打破了HTTP协议。它应该是临时重定向吗?如果是这样,网络爬虫将继续点击该页面。它应该是永久重定向吗?如果是这样,以前的内容应该在那里可用,而不是。
我认为未找到记录的页面应该发出404.我错了吗?点击/ book / 1,其中1不再存在将返回404,HTML显示与/ books完全相同的内容,并且可能是错误消息。
使用Rails进行敏捷Web开发是违反该选项的,因为用户可能会继续点击/预订/ 1生成404,以便查看/ books中可以看到的内容。
您怎么看?
答案 0 :(得分:1)
如果资源不存在,请发送404状态代码。这真的很简单。重定向意味着只有URL(暂时)无效,但资源确实存在。
答案 1 :(得分:0)
如果没有404,搜索引擎无法发现该对象已被删除。所以我认为这是必须的。
答案 2 :(得分:0)
我认为在您渲染404模板(包含404状态代码)时会有一个很好的折衷方案,它会提示用户继续/书籍或/等等。
答案 3 :(得分:0)
如果记录不再存在,则应该使用301状态代码“永久重定向”。 301和404之间的区别在于,当资源从不存在时应使用404错误代码;当资源存在但移动时,应使用301错误代码。