我的网站在这里.
它曾经是一个Django支持的博客.但是我不再更新它,所以我只是想让它成为一个静态HTML站点.我想它并用Ruby Rack将它移动到Heroku.
但是,每个URL都会解析为主页.这是因为我的config.ru文件:
use Rack::Static,
:urls => ["/media/images", "/media/js", "/media/css"],
:root => "public"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}
Run Code Online (Sandbox Code Playgroud)
问题:有没有办法映射多个URL?例如foo.com/about映射到public/about/index.html,foo.com/posts/2012/oct/21/blog-post映射到public/posts/2012/oct/21/blog-post/index.html
在这一点上,我甚至可以手动输入每一个.
谢谢你的帮助.
Dav*_*ser 19
现在我找到了最好的答案:
use Rack::Static,
:urls => ["/media/images", "/media/js", "/media/css"],
: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 "/portfolio" do
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/portfolio/index.html', File::RDONLY)
]
}
end
Run Code Online (Sandbox Code Playgroud)
并将每个URL映射到其各自的文件.乏味,但有效.另请参阅有关URL变量的此问题的答案.但是无法让它为我工作.
你为什么需要这个run陈述?也许这适合你:
use Rack::Static,
:urls => ["/media/images", "/media/js", "/media/css"],
:root => "public",
:index => "index.html",
:header_rules => [
[:all, {'Cache-Control' => 'public, max-age=86400'}]
]
run lambda{ |env| [ 404, { 'Content-Type' => 'text/html' }, ['404 - page not found'] ] }
Run Code Online (Sandbox Code Playgroud)