0

我想编写一个将请求转发到不同域的 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

会不会这么简单?有任何想法吗?

4

1 回答 1

1

您可能想查看 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 的新域(使用 $& 替换运算符)。文档中有更多信息。

于 2012-09-25T01:21:33.487 回答