我已经按照Heroku指南使用Ruby Rack(https://devcenter.heroku.com/articles/static-sites-ruby)来部署静态文件
但是,除了index.html之外,我无法访问\ public中的任何HTML文件(每个URL都解析为主页)
config.ru文件:
use Rack::Static,
:urls => ["/bootstrap", "/css", "/fonts", "/images", "/js", "/font-awesome"],
:root => "public"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
我查了以下帖子:
Ruby Rack Heroku: Serving Static Files
How to setup URLs for static site with Ruby Rack on Heroku
我仍然无法超越index.html页面。
当我更改config.ru,如下所示...我收到应用程序错误
use Rack::Static,
:urls => ["/bootstrap", "/css", "/fonts", "/images", "/js", "/font-awesome"],
:root => "public"
map "/" do
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
end
map "/about" do
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/about/index.html', File::RDONLY)
]
}
end
有没有办法映射多个网址?我的index.html中有5-6页,但无法访问。
谢谢你的帮助。
答案 0 :(得分:0)
您可以创建一个只渲染这些页面的简单控制器。可能比试图绕过MVC更容易。如果您需要帮助,请告诉我:))
实施例
控制器:
class PublicController < ApplicationController
def index
render "public/index"
end
def about
render "public/about/index"
end
end
然后将html文件放在控制器中指定的子目录的views文件夹中。
另外,不要忘记将这些方法添加到config目录中的routes.rb文件中。