我有一个简单的机架应用程序:
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
,那么它的加载就会很好。
我希望它在admin.html
lvho.st/foo
我做错了什么?
谢谢!
答案 0 :(得分:2)
你可能已经认识到即使lvho.st/foo
可能不起作用,lvho.st/foo/
(带有斜杠)也是如此!所以问题是如何跳过检查尾部斜杠或将其附加到所有请求。问题可以通过Passenger / Apache服务器上的小.htaccess
重定向来解决,但我们使用的是Ruby,所以这里是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
都会附加一个斜杠!一切都应该正常。