我已经花了几个小时彻底寻找答案。提供托管服务的Site5家伙碰壁了。

我想做的是:从playplanit.com/sfcal而不是playplanit.com/运行reils应用程序。

当前设置:
-该应用本身位于此处:/ home / playplan / apps / ppi / current /
-在.htaccess文件中
PassengerEnabled在
PassengerAppRoot / home / playplan / apps / ppi / current
-公用文件位于public_html中(以前是/ home / playplan / apps / ppi / current / public,而public_html是一个符号链接,但我更改了它,因为进行此更改的全部目的是为了使我可以运行docRoot中的Wordpress博客

已经尝试了什么:
-创建符号链接:sfcal /-> / home / playplan / apps / ppi / current / public
-将RailsBaseURI / sfcal添加到.htaccess文件
-尝试更改route.rb中的所有“路径”
这是我认为可以更改的路径之后的耙路径输出:http://cl.ly/2N2Q2z0N332v2B2F3r38
-我以为可能需要对map.root进行某种方式的更改,但是不能这样做,然后一位帮助我的技术人员将这一行添加到environment.rb:config.action_controller.relative_url_root =“ / sfcal”
-根据他们的意见,httpd.conf文件中的任何内容都无需更改
-我还尝试通过在tmp /中创建restart.txt文件来重新启动应用程序

我知道sym链接有效,但是应用程序中的某些内容识别出它是subDir,并且将提供位于“ public”目录中的404。

还有什么需要配置的想法吗?

谢谢!

最佳答案

检查乘客文档Deploying to a sub URI

编辑

您所需要做的就是遵循乘客文档。您无需弄乱铁轨路线或移动应用程序public文件夹。

假设您已将Rails应用程序部署到/home/playplan/apps/ppi/current,并且/home/playplan/public_html目录是具有以下Apache配置的虚拟主机的根目录:

<VirtualHost *:80>
  ServerName playplanit.com
  DocumentRoot /home/playplan/public_html
  <Directory /home/playplan/public_html>
    Allow from all
  </Directory>
</VirtualHost>


要使您的应用程序可以从http://playplanit.com/sfcal访问,您需要执行以下操作:


确保在httpd.conf中为您的Options FollowSymLinks启用了Apache AllowOverride OptionsVirtualHost,否则以下命令将不起作用。
sfcal目录中创建名为public_html的链接,指向您的rails public目录。


ln -s /home/playplan/apps/ppi/current/public /home/playplan/public_html/sfcal


将以下内容添加到/home/playplan/public_html/.htaccess

RailsBaseURI /sfcal

将以下内容放入/home/playplan/public_html/sfcal/.htaccess

Options -MultiViews

关于ruby-on-rails - 从Apache上的subDir到带有Passenger的运行Rails应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6245988/

10-10 15:23