我编写了这个简单的机架中间件来重写我的子域名:
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
在开发方面效果很好。但是在我失败之前没有说过网站不存在之前没有路由。
完全愿意接受这项工作。
答案 0 :(得分:1)
如何在路线中尝试:
constraints subdomain: 'something-something' do
get ':any', to: redirect(subdomain: 'site-i-want', path: '/%{any}'), any: /.*/
end
它基本上捕获了对“某事物”域的任何请求,并使用现有路径重写它,但是新的子域。