首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sinatra静态页面

问Sinatra静态页面
EN

Stack Overflow用户
提问于 2017-02-09 15:21:13
回答 2查看 211关注 0票数 2

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

这是我现在的红宝石剧本:

代码语言:javascript
复制
require 'sinatra'

set :public_folder, 'public'

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

我已经尝试删除重定向语句,但是url仍然提供了index.html。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-09 15:35:52

您可以在这里使用send_file:

代码语言:javascript
复制
get "/" do
  send_file 'public/index.html'
end

您需要从工作目录(即不仅仅是public下的路径)提供文件的完整路径,而且这只在根url上工作,它一般不会为目录提供index.html页面。如果您愿意,您可能需要在Sinatra前面设置一个单独的web服务器,并对其进行适当的配置。

票数 3
EN

Stack Overflow用户

发布于 2017-02-09 15:33:57

重定向背后的想法正是迫使浏览器向您要重定向的位置发出新的请求。由于您不想更改url,您有两个可能的解决方案:

  1. 重写而不是重定向。Sinatra本身并不提供这样的功能,但是您可以很容易地使用机架中间件: 需要‘齿条/重写’使用Rack::Rewrite做重写'/','/index.html‘结束
  2. 当请求根路径时,服务index.html内容: 获取'/‘do File.read("#{APP_ROOT}/public/index.html")结束
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42140490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档