从 routes.rb 重定向一批网址

Redirect batch of urls from routes.rb

出于 SEO 目的,我现在必须重定向一堆 URL(大约 200 个),以后可能会更多,也可能会更少。 我想轻松访问它。所以我想过有一个包含我需要重定向的所有 url 的专用文件。 像

# 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 

然后在我的 routes.rb 映射中,这个文件位于最顶部。 这是一个好习惯吗?你怎么看 ?我如何在我的 routes.rb.

中处理这个逻辑

您可以在 routes.rb 中这样做:

get '/old/path/:id', to: redirect('/new_path_%{id}', status: 301)

所以你不需要创建很多静态路由,一个测试就足够了,而不是为静态路由编写测试。

如果您希望在您的代码库中使用重定向规则,您的方法很好。由于规则是静态的,您可以在创建路由时加载它们:

# 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

您也可以考虑使用图书馆: