我编写了这个简单的机架中间件来重写我的子域:
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
这在开发中效果很好。但在生产中,我得到调用错误.each
的TheNameOfMyRackMiddleware
关于如何编写此代码,在语法上是否存在奇怪的语法错误?
我要这个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
它基本上捕获了对“某物”域的任何请求,并使用现有路径(但是新的子域)将其重写。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句