ruby - 如何在 Heroku 上使用 Ruby Rack 为静态站点设置 URL

标签 ruby static rack

我的网站是here .

它曾经是一个 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)
  ]
}

问题:有没有办法映射多个 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

在这一点上,我什至可以手动输入每一个。

感谢您的帮助。

最佳答案

目前我找到的最佳答案是:

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

并将每个 URL 映射到其各自的文件。乏味,但有效。另请参阅 this question regarding URL variables 的答案.虽然无法让它为我工作。

关于ruby - 如何在 Heroku 上使用 Ruby Rack 为静态站点设置 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13206289/

相关文章:

ruby-on-rails - 获取 SSL_connect ... 使用 .p12 文件 ruby​​ 时 sslv3 警报握手失败

static - 有区别的联合方法看不到它的静态成员

.net - 为什么我的函数范围静态变量在对象实例之间持续存在?

ruby - 根据请求重新加载 rails.root/app/resources/*

ruby-on-rails - 我的 rackup 文件有什么问题?

ruby-on-rails - 直接从 Rails 操作中使用 Rack 中间件

ruby - 在 selenium webdriver 2 ruby​​ 中鼠标向上

Ruby:不允许在 'yield' 之后放置空格

Ruby Date 1 个月前到 String

java - 为什么静态初始化程序允许在 Java 中重新初始化静态变量?