【问题标题】:Rails root url with mod_proxy带有 mod_proxy 的 Rails 根 URL
【发布时间】:2013-05-17 04:03:11
【问题描述】:

Rails 版本:3.2
我有一个现有的 PHP 站点,我想使用 Rails 在其中添加新功能。

最终的目标是将整个站点迁移到rails,因此我选择使用mod_proxy通过子路径集成rails:/ror

这是我的 mod_proxy 设置:

<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass /ror http://localhost:3000/
ProxyPassReverse /ror http://localhost:3000/

问题是,当我使用 url helper 时,rails 给出的相对路径是错误的。

<%= url_for(:action => 'index', :controller => 'travels' %>

给予

/travels/

正确的结果是

/ror/travels/

url helper 和其他具有相对 url 的 helper 的想法很好。我打算使用它们。 如何为 rails 设置正确的根路径以在 helper 中使用?

【问题讨论】:

    标签: php ruby-on-rails ruby routes mod-proxy


    【解决方案1】:

    如果您使用的是 rails 4,您可以在代理声明之前添加以下内容:

    ProxyRequests 关闭
    ProxyPreserveHost 开启

    并添加 retry=0 以允许 Rails 服务器重新启动

    ProxyPass /ror http://localhost:3000/ror retry=0

    在 config.ru 中

    映射“/ror”做
    运行 Rails.application
    结束

    映射“/”做
    运行 Rails.application
    结束

    在 config/application.rb
    添加这一行:

    config.action_controller.relative_url_root = "/ror"

    请注意,这将引导所有网址:

    http://domain.com/rorhttp://localhost:3000/ror

    记得使用 link_to 或 root_url 通过 baseuri /ror 获取 uri

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2012-10-05
      • 2013-02-13
      • 2017-03-27
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多