我在一个应用程序中看到了很多例外情况——它是从一个现成的电子商务网站转换而来的——一年前,当蜘蛛点击不再存在的路线时。这些数量不多,但有时一天会多次被各种蜘蛛击中。我已经阻止了最严重的违规者(主要是垃圾蜘蛛),但我显然无法阻止 google 和 bing。要手动删除的 URL 太多。
我不确定为什么应用程序不返回 404 代码,我猜其中一条路由是捕获 URL 并尝试生成视图,但是由于缺少资源,它返回 nil,这就是抛出错误。像这样:
undefined method `status' for nil:NilClass
app/controllers/products_controller.rb:28:in `show'
同样,这个特定的产品已经消失了,所以我不确定为什么应用程序没有返回 404 页面,而是即使资源不存在,它也会尝试生成视图,它正在检查以确保nil
资源具有公共状态,并抛出错误。
如果我为 Active:Record not found 进行救援,会这样做吗?这有点难以测试,因为我必须等待各种机器人通过。
我也遇到了一些依赖设置为跟踪的 cookie 的链接的问题,如果未设置 cookie,应用程序会在处理请求之前设置它。这似乎不适用于蜘蛛,我已将这些链接设置为 nofollow 链接,但这似乎并不被所有蜘蛛所尊重。