【发布时间】:2012-03-03 17:27:34
【问题描述】:
我有一个如下所示的单例路由:
resource :avatar, :only => [:edit, :update]
当用户编辑头像时,他们会转到 /avatar/edit 以查看表单,当他们保存时,他们会通过 put 请求发送到 /avatar,然后重定向回 /avatar/edit。当我们收到对 /avatar 的 GET 请求时会发生什么?
目前无法识别路线并返回通用 404。但是这种情况发生的频率比它应该的要多,所以我觉得我们应该做点什么。我很想添加一个:
get "/avatar" => redirection("/avatar/edit")
有什么理由不这样做?这样做有什么危险吗?
我不确定发生此错误的所有原因,但我知道一些:
有一个错误,所以不是重定向,而是在 put 路由中再次向用户显示编辑表单,但随后,用户重新使用了 url,而不是重新提交(在 url 中按 enter字段、复制和粘贴、书签等)。
此时用户决定更改区域设置(经常发生,因为错误消息是人们第一次真正需要理解网站,因此他们决定将语言切换为他们理解的语言)当然会在同一个 URL 中生成一个 get。
我现在有一个简单的重定向在第二种情况下不是最好的,因为错误丢失了,但至少它比 404 好。
【问题讨论】:
-
您无法通过 grep 访问日志来找出人们收到 404 的原因?我经常看到机器人试图点击这些页面,而是为它们永久呈现移动,以便该页面脱离索引。
-
@phoet 没有页面被移动到这里,我真的不在乎找出某人得到 404 的所有原因。没有指向这些页面的链接,所以人们到达他们会做一些不寻常的事情,因此,没有提供有用的 http 引荐来源网址,因此查看日志不会对他们到达该页面的原因有太多了解。
标签: ruby-on-rails rest routes