根据域指定 Rails 控制器操作

Specify Rails Controller Action Based on Domain

我有一个应用程序支持两个域,http://domain1.comhttp://domain2.com。模型、控制器和视图在域之间共享。

过去 http://domain1.com/user_type_2/faqshttp://domain2.com/user_type_2/faqs 是使用相同的控制器操作分别提供的。但是,现在,出于 SEO 的原因,我想完全删除与域 1 关联的视图,并将所有用户类型 2 常见问题解答请求(来自任一域)路由到 http://domain2.com/user_type_2/faqs - 继续使用现有的控制器和操作。

如何在 routes.rb 中指定一条路由,将所有请求从 http://domain1.com/user_type_2/faqs 重定向到 http://domain2.com/user_type_2/faqs

我试过了

match 'http://domain1.com/user_type_2/faqs', :to => redirect('http://domain2.com/user_type_2/faqs')

constraints(:host => /domain1.com/) do match "/user_type_2/faqs" => redirect {|params, req| "//domain2.com/#{params[:path]}"} end

似乎都不起作用。

事实证明答案是域约束内的重定向。一看就很简单

constraints domain: 'domain1.com' do
  match 'user_type_2/faqs', :to => redirect('http://domain2.com/user_type_2/faqs')
end