flrnt flrnt - 5 months ago 44
Ruby Question

Redirect batch of urls from routes.rb

For SEO purpose, I have to redirect bunch of urls (something like 200) for now, maybe more later, maybe less.
I want to have easy access to it. So I thought about having a dedicated file containing all urls I need to redirect.
Something like

# config/seo_redirection_table.yml

- old_path: '/old/path/1'
new_path: '/new_path_1'
status: 301
- old_path: '/old/path/2'
new_path: '/new_path_2'
status: 301

And then in my
mapping this file at the very top.
Is it a good practice ? What do you think ? And how can I handle this logic in my

Answer Source

If you'd like to have your redirect rules within your code base, your approach is fine. Since the rules are static you can load them upon routes creation:

# config/routes.rb

require 'yaml'

Rails.application.routes.draw do
  redirects = YAML.load_file('config/redirects.yml')
  redirects.each do |rule|
    get rule["old_path"], to: redirect(rule["new_path"], status: rule["status"])

  # other routes

You may also consider using a library: