ruby on rails - rails - Rieles: redirige todas las rutas desconocidas a root_url
routes rails examples (4)
Carriles 4-
( routes.rb )
Todavía puede usar un simple get
para redirigir todas las rutas desconocidas.
get ''*path'', to: ''home#index''
Si desea proporcionar el enrutamiento a las solicitudes POST y GET, puede seguir utilizando la coincidencia, pero Rails desea que especifique el método de solicitud a via
.
match "*path" => "home#index", via: [:get, :post]
Recuerde que routes.rb
se ejecuta secuencialmente (haciendo coincidir la primera ruta que se ajusta a la estructura de ruta suministrada), de modo que ponga la captura de comodines en la parte inferior de sus coincidencias.
Cada vez que un usuario accede a la página incorrecta, Rails muestra 404.html desde la carpeta pública. Sin embargo, me gustaría simplemente redirigir el navegador a la página raíz, sin mostrar nada. Así que traté de globbing, pero fue en vano, todavía muestra la página 404. Aquí hay un extracto de mi archivo de rutas:
# ...
map.root :controller => ''home'', :action => ''home''
map.connect ''*'', :controller => ''home'', :action => ''home''
¿Alguna sugerencia? ¡Gracias chicos!
Como la respuesta de Arkan. Un punto, si no quieres este comportamiento en el entorno de desarrollo, entonces podría hacerlo:
match ''*path'' => redirect(''/'') unless Rails.env.development?
Necesitas crear un controlador para hacer eso
class RedirectsController
def index
redirect_to root_url
end
end
Y en tus rutas
map.connect ''*'', :controller => ''redirects'', :action => ''index''
Si su proyecto está alimentado por raíles 3, agregue simplemente esta línea a sus rutas.rb
match ''*path'' => redirect(''/'')
Editar: soporte de Rails 4
match ''*path'' => redirect(''/''), via: :get
or
get ''*path'' => redirect(''/'')