2

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

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

example.com/mysite/ anotherexample.com/

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

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

4

1 回答 1

1

你想要的是这样的:

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

像这样的过程在这里:

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 并不关心主机/子域/任何内容

于 2013-11-08T01:53:30.240 回答