Rails和多个基本URL

时间:2013-05-23 22:35:08

标签: ruby-on-rails ruby routing

所以我开始认为这是不可能的,因为几小时的谷歌搜索没有任何变化。

我有一个应用程序,它将存在于从不同服务器代理的多个URL中。我希望能够使用以下两者访问同一个应用程序:

example.com/mysite/ anotherexample.com /

使用代理(HAProxy,Apache,无论如何)我可以使用(或两者),但页面上的URL仅适用于其中一个。最值得注意的是资产标签都以/资产开头,这意味着如果我将基本网址设置为/然后使用上面列出的第一个网址访问该网站,我得到的资产标签看起来像“example.com/assets”,当我想要的是“example.com/mysite/assets”

是否有基于请求URL而不是全局定义的基础的URL的良好解决方法?

1 个答案:

答案 0 :(得分:1)

你想要的是这个:

http://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html

像这样的proc这里:

config.action_controller.asset_host = Proc.new { |source, request|
  if request.ssl?
    "#{request.protocol}#{request.host_with_port}"
  else
    "#{request.protocol}assets.example.com"
  end
}

您可以检查请求对象或使用某些本地环境变量或任何逻辑来控制组件路径。

我会看到像phusion乘客这样的东西,因为他们的高级域配置文档很好:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#deploying_rails_to_sub_uri

最后,只要你使用路径助手(root_path,image_tag等),大多数rails都不关心host / subdomain / whatever