把Rails程序移到apache的子路径下碰到了问题

阅读更多

我写的一个应用,是项目的一部分,做完了,要把它合到现有的项目中去(这个项目是用C++做Apahce 的module扩展来实现的),作为一个子目录比如/task,使用的方法是mongrel + apache + proxy,把这个/task子路径映射到后台的mongrel_rails进程上。也就是反向代理。
网上有文章:http://mongrel.rubyforge.org/docs/apache.html

mongrel的启动参数:

代码:
sudo mongrel_rails start -e production –prefix /task

apache2.2.3的配置:

代码:
ProxyRequests Off
ProxyPass /task http://0.0.0.0:3000/task
ProxyPassReverse /task http://0.0.0.0:3000/task

现在访问http://X.X.X.X/task,应用都比较正常,比如原来的路径是/project/list,现在就是/task/project/list。统统的自动在原来的路径前面加了一级/task/

唯一的问题是:
原来在Rails中手写了一些链接,比如“返回首页”,写的链接路径是“/”,在目前的这个环境中就不正常了,它应该还是回到原来Rails程序的public目录下,而不是回到我现在的apache的根目录下。
原来以来不用link_to或者url_for生成链接,直接手写路径会提高rhtml的解析效率,现在就碰到这样的移植问题。目前已经把应该用link_to/url_for的已经全部换掉了,

再重复一遍我的问题:如何写link_to/url_for,让原来Rails的”/”在我的环境下还是回到Rails的public目录?还有一些链接的静态html文件,如何在移植的环境下,找到服务器上的正确的路径?
路径肯定不能写死。
我记得asp/php下面都有这样的server_map之类的函数,得到一个文件的相对路径。

update:

谢谢蔡望青(我老是念成菜青虫) 的回复。其实在Rails的红宝书里面,在讲Rails的配置文件时,里面已经提到了asset_host,看书没记性。在看完书后,就再也没有翻过,其实这书我已经看过3遍了,每次看都有新感觉。特别是蹲在马桶上看,非常有感觉。哈哈。

你可能感兴趣的:(Rails,Apache,ASP,应用服务器,PHP)