Rails路由/资产与代理位置

时间:2015-10-23 13:32:10

标签: ruby-on-rails apache

好的 - 我有一个rails应用程序,让我们在Dreamhost VPS的域上调用它" railsapp"(我有其他域名,有些'静态'和一个服务于perl / CGI脚本的人。)

由于显而易见的原因,Passenger无法在端口80上运行,并且当前正在端口8001上提供此应用程序。我有一个代理(在Apache中配置)设置为将http://DOMAIN/books的请求路由到{{1} (顺便说一句,它是DOMAIN:8001/)。

问题:

1)没有资产被提供 - 对样式表404的请求,尽管样式表确实存在于DOMAIN/railsapp中。我已经尝试了所有可能的预编译组合,预编译等,似乎没有任何效果。

2)链接工作正常。通过端口8001显式访问,链接正常工作,例如[railsapp]/public/assets显示'关于'页面和DOMAIN:8001/about将我带到相应的项目。同样,明确访问(即通过在地址栏中手动键入地址),DOMAIN:8001/[railsapp]/[:id]DOMAIN/books/[railsapp]/[:id]完全正常。但是DOMAIN/books/about(对于ID标识的项目)的链接都指向DOMAIN/books,这给了我404;类似地指向DOMAIN/[railsapp]/[:id]的关于'的链接也不起作用。

现在!如果我要谨慎对待风并将我的VPS切换为使用nginx而不是Apache,请猜猜是什么?路径大多有效!由ID标识的项目链接为DOMAIN/about和"关于"链接为DOMAIN/books/[railsapp]/[:id],这很棒。 rails app 中唯一的问题是,返回root的链接被莫名其妙地(?)呈现为DOMAIN/books/about的链接。这很烦人,但似乎修复它是微不足道的。这个问题的一个问题是 - 你可能还记得这个帖子的开头--VPS还托管了一个使用perl / CGI的网站,这是打破了地狱,因为nginx不是'真的是要处理perl / CGI。因此,我坚持使用Apache,以便CGI保持不间断。

我已经多次以多种方式搜索此问题。我可能已经看到了你想要链接我的任何stackoverflow问题或博客文章。如果 知道如何修复路径和资产问题,请根据上述信息告诉我们。

1 个答案:

答案 0 :(得分:3)

尝试使用application.rb" class Application<导轨::应用":

config.action_controller.default_url_options = {host: 'DOMAIN/books', port: 80}
config.action_controller.asset_host = 'DOMAIN/books'
config.serve_static_files = true # for rails4; for rails3 use .serve_static_assets = true

之后,重新启动您的应用程序。

确保应用程序在任何地方使用* _url-helpers而不是* _path-helpers(即root_url而不是root_path)