gpt4 book ai didi

ruby-on-rails - 如何使用 Rack 中间件为特定 URL 返回 404

转载 作者:行者123 更新时间:2023-12-04 02:42:30 25 4
gpt4 key购买 nike

我管理的一个站点不断收到来自旧版本站点的对不再存在的 javascript 文件的请求。这些请求占用了大量资源,因为它们每次都通过 Rails 路由以返回 404。我认为让 Rack 处理该特定 URL 并返回 404 本身会更好。那是对的吗?如果是这样,我将如何设置它?

我一直在查看这篇博文,我认为这是一种前进的方式(即,从一些现有的 Rack 模块继承):

http://icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails-streaming-responses/

最佳答案

所以我最终编写了自己的一点中间件:

module Rack

class NotFoundUrls

def initialize(app, exclude)
@app = app
@exclude = exclude
end

def call(env)

status, headers, response = @app.call(env)

req = Rack::Request.new(env)
return [status, headers, response] if !@exclude.include?(URI.unescape(req.fullpath))

content = 'Not Found'
[404, {'Content-Type' => 'text/html', 'Content-Length' => content.size.to_s}, [content]]

end

end

end

然后将其添加到 config.ru 文件中:
use Rack::NotFoundUrls, ['/javascripts/some.old.file.js']

这是我第一次这样做,所以如果有任何明显的错误,请告诉我......

关于ruby-on-rails - 如何使用 Rack 中间件为特定 URL 返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19594388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com