我想编写一个Rack应用程序,将请求转发到其他域。法拉第宝石可能适用于此。这样的事情会很好:
我的config.ru
文件:
...
my_app = lambda do |env|
conn = Faraday.new(env)
conn.url = "http://some-other-domain.com"
env.get? ? conn.get : conn.post
end
run my_app
难道这么简单吗?有什么想法吗?
答案 0 :(得分:1)
您可能希望查看rack-rewrite(https://github.com/jtrupiano/rack-rewrite)。您可以使用它来定义和应用重写和重定向规则。可能使用适合您用例的机架重写如下:
require 'rack/rewrite'
use Rack::Rewrite do
r301 %r{.*}, 'http://mynewdomain.com$&', :if => Proc.new {|rack_env|
rack_env['SERVER_NAME'] != 'mynewdomain.com'
}
end
# rest of your app
重写规则的签名是rewrite_method(request_url_expression,rewrite_url_expression,options)。在此示例中,方法#r301将为使用请求URI(使用$&替换运算符)将给定正则表达式与新域匹配的所有请求URL提供永久重定向。文档中有更多信息。