Routage vers la page HTML statique dans / public

Comment puis-je router /foo pour afficher /public/foo.html dans Rails?

Tu peux le faire:

Ajoutez ceci dans votre fichier routes.rb.

 match '/foo', :to => redirect('/foo.html') 

Mettre à jour

Dans Rails 4, il faut utiliser “get”, pas “match”:

 get '/foo', :to => redirect('/foo.html') 

merci Grant Birchmeier

Cela peut être fait sans déclencher une redirection. Suivez les étapes ci-dessous pour pouvoir router les fichiers statiques dans config/routes.rb comme indiqué dans cet exemple:

 # This route will serve public/index.html at the /login URL # path, and have a URL helper named `login_path`: get "/login", to: static("index.html") # This route will serve public/register.html at the /register # URL path, and have URL helper named `new_user_registration_path`: get "/register", to: static("register.html"), as: :new_user_registration 
  1. Créez config/initializers/static_router.rb avec tout le contenu du fichier affiché à la fin de cette réponse. Assurez-vous de basculer les commentaires pour les lignes relatives à la version Rails de votre application.
  2. Redémarrer l’application (premier bin/spring stop pour être sûr que l’application est complètement rechargée).
  3. Commencez à utiliser la méthode static(path) dans votre config/routes.rb .

 # File: config/initializers/static_router.rb module ActionDispatch module Routing class StaticResponder < Endpoint attr_accessor :path, :file_handler def initialize(path) self.path = path # Only if you're on Rails 5+: self.file_handler = ActionDispatch::FileHandler.new( Rails.configuration.paths["public"].first ) # Only if you're on Rails 4.2: # self.file_handler = ActionDispatch::FileHandler.new( # Rails.configuration.paths["public"].first, # Rails.configuration.static_cache_control # ) end def call(env) env["PATH_INFO"] = @file_handler.match?(path) @file_handler.call(env) end def inspect "static('#{path}')" end end class Mapper def static(path) StaticResponder.new(path) end end end end 

Source: https://github.com/eliotsykes/rails-static-router

Par exemple, dans Rails 4, ajoutez l’itinéraire suivant:

 get '/example', :to => redirect('example.html') 

Vous devez également activer les fichiers statiques du répertoire ‘public’ dans votre configuration:

 config.serve_static_files = true 

OU

 config.serve_static_assets = true 

Vous devrez peut-être également fournir votre répertoire public en tant que root dans la configuration NGINX.