我想编写一个将请求转发到不同域的 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
会不会这么简单?有任何想法吗?
您可能想查看 rack-rewrite ( https://github.com/jtrupiano/rack-rewrite )。您可以使用它来定义和应用重写和重定向规则。适合您的用例的 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 将为与给定正则表达式匹配的所有请求 url 提供永久重定向到具有请求 URI 的新域(使用 $& 替换运算符)。文档中有更多信息。