【问题标题】:How does rails know if it runs under a subpath?rails 如何知道它是否在子路径下运行?
【发布时间】:2018-09-26 07:29:16
【问题描述】:

我想在https://server.com/myapp/testing 上运行一个 Rails 应用程序。如果我说redirect_to '/bla',我希望它重定向到/myapp/testing/bla。我如何告诉 Rails,它应该在所有路径前加上 /myapp/testing

我正在使用 apache httpd 运行 rails 5 和乘客。

【问题讨论】:

    标签: ruby-on-rails routing ruby-on-rails-5 passenger


    【解决方案1】:

    正如docs 中所说,您可以通过在config/application.rb 中添加此行来配置您的rails 应用程序以在子目录中运行

    config.relative_url_root = '/myapp/testing'
    

    这将帮助 Rails 生成适当的路线。

    您可能还需要根据docs 配置您的乘客配置

    编辑:正如@le_me 所建议的,必须为乘客设置RAILS_RELATIVE_URL_ROOT 才能将前缀传达给rails 应用程序。

    【讨论】:

    • 明智的建议,谢谢。就我而言,问题可能是设计中的错误。我通过覆盖sign_in 和sign_out 之后的重定向路径来修复它。无论如何,我自己研究并发现有一个名为RAILS_RELATIVE_URL_ROOT的环境变量,rails用来设置config.relative_url_root。我猜乘客使用它来将前缀传达给 rails 应用程序,因为对我来说,它无需修改 config/application.rb 即可工作。如果您可以将此信息添加到您的答案中,我将非常乐意接受。
    • 嗨@le_me,感谢您的指出。我的答案已更新。真诚的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多