题
我目前正在开发一个基于机架的应用程序,想要重定向所有文件请求(例如文件名.文件类型)到指定的文件夹。
Rack::Static 仅支持特殊文件夹的文件请求(例如“/媒体”)。
我是否必须编写自己的 Rack 中间件,或者是否存在开箱即用的解决方案?
此致
解决方案
要将每个请求重定向到特定路径,请使用 Rack::File
(由于某种原因,这个类在最近的文档中不存在,但它是 仍然是一部分 最新的机架):
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
其他提示
更新,最新的机架实现允许你使用架::静态
示例:
use Rack::Static, :urls => ["/media"]
将服务文件夹的相对./media
下的所有静态资源到config.ru
位置。
您也许能够直接使用Rack::File
。这里是你可以插入一个rackup文件config.ru
看到它工作:
app = proc do |env|
Rack::File.new('foo/bar').call(env)
end
run app
run Rack::Directory.new(Dir.pwd)
不隶属于 StackOverflow