Ruby on rails 如何将一个子域重写为另一个子域?

Ruby on rails 如何将一个子域重写为另一个子域?,ruby-on-rails,url-rewriting,subdomain,rack,middleware,Ruby On Rails,Url Rewriting,Subdomain,Rack,Middleware,我编写了这个简单的框架中间件来重写我的子域: def call(env) request = Rack::Request.new(env) if request.host.starts_with?("something-something") [301, { "Location" => request.url.gsub('something-something','site-i-want') }, self] else @app.call(en

我编写了这个简单的框架中间件来重写我的子域:

def call(env)
  request = Rack::Request.new(env)

    if request.host.starts_with?("something-something")
      [301, { "Location" => request.url.gsub('something-something','site-i-want') }, self]
    else
      @app.call(env)
    end
这对发展很有效。但是在生产中,我遇到一个错误,调用
名称的

我写这篇文章的方式有什么奇怪的语法错误吗

我想要这个
someting something.mywebsite.com
转到
site-I-want.mywebsite.com

我还直接用我的路线尝试了以下方法:

constraints :subdomain => 'something-something' do
  redirect { |p, req| req.url.sub('something-something', 'site-i-want') }
end  
这对发展很有效。但是,在我失败之前,我不会说这个网站不存在


无论怎样都可以实现这一目标。

在您的路线上尝试一下如何:

constraints subdomain: 'something-something' do
  get ':any', to: redirect(subdomain: 'site-i-want', path: '/%{any}'), any: /.*/
end
它基本上捕获对“某物”域的任何请求,并用现有路径(但新的子域)重写它