flrnt flrnt - 8 months ago 58
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
routes.rb
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
routes.rb
.

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"])
  end

  # other routes
end

You may also consider using a library:

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download