4

我使用本指南将静态网站部署到 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.htmldomain.com/subfolder指向public/subfolder/index.html。登陆页面似乎工作正常,我似乎无法将他们的请求提供给正确的目录(即正确imagesjscss文件夹)。

任何想法如何解决这个问题?谢谢!

4

1 回答 1

1

我认为问题在于您在分歧中使用路由:

use Rack::Static, 
  :urls => ["/images", "/js", "/css"],
  :root => "public"

例如,上述内容应从/js/jquery-min.js文件public夹中提供。

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/*然后在您需要基本目录、/subfolder/js/*需要子文件夹或仅js/*在您想要获取与 html 页面的相同目录级别的脚本时路由到资产。

让我知道是否可以解决它!

于 2013-03-03T19:23:50.037 回答