我目前正在开发一个基于机架的应用程序,想要重定向所有文件请求(例如文件名.文件类型)到指定的文件夹。

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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top