假设我的目录结构类似于:
path_to_file/one/index.html
如何设置我的sinatra应用程序路由到
mysite.com/path_to_file/one/
并呈现前面提到的文件?path_to_file
将始终保持不变,但其中会有不同的文件夹(two
, three
等)。
我试过以下方法:
get '/path_to_file/:number' do
File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end
,但随后从index.html
链接的javascript文件不正确渲染。
明白了!
get '/path_to_file/:number/:file' do
File.read(File.join('path_to_file', "#{params[:number]}", "#{params[:file]}"))
end
get '/path_to_file/:number' do
File.read(File.join('path_to_file', "#{params[:number]}", "index.html"))
end
顺序很重要,因为如果这两个方法颠倒,get '/path_to_file/:number'
就成为get '/path_to_file/:number/:file'
的超集。
只是一个想法,但是您可以设置您的服务器软件,Apache
, nginx
,无论您使用的是什么,从不同的位置提供.css
和.js
和图像文件。