我已使用本指南将静态网站部署到 Heroku:https://devcenter.heroku.com/articles/static-sites-ruby
我创建了这个文件夹结构:
- site
|- config.ru
|- Gemfile
|- public
|- index.html
|- images
|- js
|- css
|- subfolder
|- images
|- js
|- css
并将此写入 config.ru
:
use Rack::Static,
:urls => ["/images", "/js", "/css"],
:root => "public"
use Rack::Static,
:urls => ["/images", "/js", "/css"],
:root => "public/subfolder"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
map '/subfolder' do
run Proc.new { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=6400'
},
File.open('public/subfolder/index.html', File::RDONLY)
]
}
end
现在我想让 domain.com
指向 public/index.html
并且 domain.com/subfolder
指向 公共(public)/子文件夹/index.html
。着陆页似乎工作正常,我似乎无法将他们的请求提供给正确的目录(即正确的 images
、js
和 css
文件夹)。
有什么解决办法吗?谢谢!
最佳答案
我认为问题在于您不同意使用路由:
use Rack::Static,
:urls => ["/images", "/js", "/css"],
:root => "public"
例如,上面应该从 public
文件夹提供 /js/jquery-min.js
。
use Rack::Static,
:urls => ["/images", "/js", "/css"],
:root => "public/subfolder"
现在,如果您尝试以相同的方式使用 public/subfolder
,/js/jquery-min.js
现在应该从 public/subfolder 提供/js/jquery-min.js
。这是不一致的。
请尝试以下操作:
use Rack::Static, root: 'public',
urls: %w( /images /js /css /subfolder )
然后在需要基本目录时使用 /js/*
路由到 Assets ,在需要子文件夹时使用 /subfolder/js/*
路由到 Assets ,或者只是 js/*
当你想获取 html 页面相同目录级别的脚本时。
让我知道是否解决了问题!
关于ruby - 如何正确地将 domain.com/subfolder 指向 Ruby with Rack 中的静态网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14885283/