从routes.rb重定向批量的URL

时间:2017-08-17 10:07:07

标签: ruby-on-rails ruby routes seo yaml

出于搜索引擎优化的目的,我现在必须重定向一堆网址(类似于200),也许更晚,也许更少。 我希望能够轻松访问它。所以我想到了一个包含我需要重定向的所有网址的专用文件。 像

这样的东西
# 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中处理这个逻辑。

2 个答案:

答案 0 :(得分:0)

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

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

因此,您不需要创建大量静态路由,只需编写一次测试即可为静态路由编写测试。

答案 1 :(得分:0)

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

# 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

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