我遵循Heroku指南使用Ruby Rack(https://devcenter.heroku.com/articles/static-sites-ruby)部署静态文件,但除了\public
之外,我无法访问index.html
中的任何HTML文件。即,localhost:9292/test.html
仍然映射到index.html
。 (我的所有样式和js文件都正确提供)。
以下是我的config.ru
文件。我知道什么是错的,但不确定有效的解决方案?
use Rack::Static, :urls => ["/images", "/js", "/css"], :root => "public"
run lambda { |env| [
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY) ] }
答案 0 :(得分:3)
对于config.ru
文件,请尝试:
use Rack::Static,
:urls => ["/images", "/js", "/css"],
:root => "public"
run Rack::File.new("public")
您也可以用run Rack::Directory.new("public")
替换最后一行,它会提供所有文件,但如果有人访问目录的url(如根目录),则会提供类似接口的文件浏览器
答案 1 :(得分:0)
我没有Ruby经验,我发现这个样板项目在尝试将静态网站部署到Heroku时很有用:
特别要确保除Gemfile
之外还有Gemfile.lock
和config.ru
个文件。
作者的项目结构托管根目录中的所有内容,但您可以轻松地将所有内容移至public/
,并将@ {1}}更正为@looby建议。