shallow rails namespace examples concern ruby-on-rails redirect routing routes url-routing

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(''/'')