Sinatra Static Page

时间:2017-02-09 15:21:14

标签: ruby sinatra

在我的公共文件夹中,我有一个文件 index.html 。我希望能够使用url localhost:4567 来显示页面(不显示 localhost:4567 / index.html

这是我目前的红宝石脚本:

require 'sinatra'

set :public_folder, 'public'

get '/' do
  redirect '/index.html'
end

我尝试删除重定向语句,但网址仍然是 index.html

2 个答案:

答案 0 :(得分:3)

您可以在此处使用send_file

get "/" do
  send_file 'public/index.html'
end

您需要提供工作目录中文件的完整路径(即不仅仅是public下的路径),这只适用于根网址,它不会提供index.html一般的目录页面。如果您需要,可能需要在Sinatra前面设置一个单独的Web服务器并进行相应的配置。

答案 1 :(得分:0)

重定向背后的想法正是强制浏览器向您重定向的位置发出新请求。 由于您不想更改网址,因此您有两种可能的解决方案:

  1. 重写而不是重定向。 Sinatra本身并不提供此类功能,但您可以轻松使用机架中间件:

    require 'rack/rewrite'
    
    use Rack::Rewrite do
      rewrite '/', '/index.html'
    end
    
  2. 在询问根路径时提供 index.html 内容:

    get '/' do
      File.read("#{APP_ROOT}/public/index.html")
    end