2017-02-09 3 views
2

私のパブリックフォルダには、ファイルindex.htmlがあります。私は、URLを使用することができるようにしたいはlocalhost:ページを表示する4567を表示せずにローカルホスト:4567/index.htmlをSinatra Static Page

これが私の現在のRubyスクリプトです:

require 'sinatra' 

set :public_folder, 'public' 

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

私はリダイレクトステートメントを削除しようとしましたが、URLはまだindex.htmlとなっています。

答えて

3

あなたはここにsend_fileを使用することができます。

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

作業ディレクトリからファイルの絶対パスを指定する必要があります。 publicの下のパスだけでなく)、これはルートURLでのみ機能し、一般的にはディレクトリのためにindex.htmlページを提供しません。必要な場合は、Sinatraの前に別のWebサーバーを設定し、適切に構成する必要があります。

+0

完璧に動作します!ありがとうございます – user2843365

0

リダイレクトの背後にあるアイデアは、ブラウザがリダイレクト先への新しい要求を強制することです。代わりにリダイレクトの

  1. 書き換え:あなたは、URLを変更したくない として、次の2つの可能な解決策を持っています。シナトラ自身がこのような機能を提供していませんが、あなたは簡単にラックミドルウェアを使用することができます。ルート・パスのために尋ねられたとき

    require 'rack/rewrite' 
    
    use Rack::Rewrite do 
        rewrite '/', '/index.html' 
    end 
    
  2. のindex.html内容をサーブ:

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

@ mattのファイル配信方法が優れています。 – ndn