2012-11-09 1 views
0

J'ai récemment rencontré des problèmes lors de la mise à niveau vers la nouvelle pile de cèdres sur Heroku. J'ai donc travaillé autour de cela en vidant mon ancien site web dans un dossier public statique alimenté par le code sinatra ci-dessous. Toutefois, les liens vers les anciennes URL ne chargent pas les pages statiques car elles ne parviennent pas à ajouter .html à la fin des URL.Comment créer une redirection générique avec sinatra

require 'rubygems' 
require 'sinatra' 

set :public, Proc.new { File.join(root, "public") } 

before do 
    response.headers['Cache-Control'] = 'public, max-age=100' # 5 mins 
end 

get '/' do 
    File.read('public/index.html') 
end 

Comment puis-je ajouter .html à la fin de tous les URL? serait-il quelque chose comme ceci:

get '/*' do 
    redirect ('/*' + '.html') 
end 

Répondre

2

Vous pouvez obtenir le chemin adapté via le params[:splat] ou de l'aide request.path_info, je tendance à utiliser la seconde:

get '/*' do 
    path = params[:splat].first # you've only got one match 
    path = "/#{path}.html" unless path.end_with? ".html" # notice the slash here! 
    # or 
    path = request.path_info 
    path = "#{path}.html" unless path.end_with? ".html" # this has the slash already 
    # then 
    redirect path 
end 
+0

Great! Fonctionne un régal! Merci beaucoup. – user251732

Questions connexes