我目前正在开发基于机架的应用程序,并希望将所有文件请求(例如filename.filetype)重定向到指定的文件夹。
Rack :: Static仅支持特殊文件夹的文件请求(例如“/ media”)。
我是否必须编写自己的Rack中间件或是否存在开箱即用的解决方案?
祝你好运
答案 0 :(得分:38)
要将每个请求重定向到特定路径,请使用Rack::File
(由于某种原因,最近的文档中没有此类,但still part of是最新的Rack):
run Rack::File.new("/my/path")
要重定向每个请求,并在目标目录中添加所有文件的HTML索引,请使用Rack::Directory
:
run Rack::Directory.new("/my/path")
组合多个目录或仅提供来自目标目录的一些请求:
map "/url/prefix" do
run Rack::File.new("/my/path")
end
# More calls to map if necessary...
# All other requests.
run MyApp.new
答案 1 :(得分:11)
更新,最新的Rack实现允许您使用Rack::Static
示例:
use Rack::Static, :urls => ["/media"]
将提供相对于./media
位置的config.ru
文件夹下的所有静态资源。
答案 2 :(得分:10)
您可以直接使用Rack::File
。这是一个config.ru
文件,您可以将其插入Rackup以查看其是否有效:
app = proc do |env|
Rack::File.new('foo/bar').call(env)
end
run app
答案 3 :(得分:2)
run Rack::Directory.new(Dir.pwd)