2014-01-20 56 views
1

工作,我有一個簡單的機架應用程序:機架靜態不是地圖

map "/foo" do 
    use Rack::Static, 
    :urls => [""], :root => 'public', :index => 'admin.html' 
    run lambda {|env| [200, {}, []]} 
end 

當我瀏覽到lvho.st/foo我得到404 File not Found,但如果我去lvho.st/foo/admin.html它的加載就好了。

我希望它在lvho.st/foo

服務admin.html我在做什麼錯?

謝謝!

回答

2

雖然lvho.st/foo可能無法正常工作,但是您可能已經想到了自己的想法,然而lvho.st/foo/(帶有斜線)卻可以!所以問題是如何跳過檢查尾部斜線或將其追加到所有請求。這個問題可以用小.htaccess來解決重定向乘客/ Apache服務器上,但我們在Ruby中,所以這裏的紅寶石的解決方案 - rack-slashenforce gem。在項目文件夾

運行這個(或將其附加到你的Gemfile和運行bundle install):

gem install rack-slashenforce 

然後你的Ruby文件應該是這樣的:

require 'rack-slashenforce' 

# Make sure you declare this outside the map block 
use Rack::AppendTrailingSlash 
map "/foo" do 
    use Rack::Static, :urls => [""], :root => 'public', :index => 'admin.html' 
    run lambda {|env| [200, {}, []]} 
end 

現在每次調用lvho.st/foo會得到一個斜槓附加!一切都應該正常工作。

+0

很好發揮。謝謝。 – 0xSina