使用 Passenger 和 Apache 在子目录中托管 rails3 应用程序时,视图层中的相对路径不正确

使用 Passenger 和 Apache 在子目录中托管 rails3 应用程序时,视图层中的相对路径不正确

我想使用子目录在多台服务器上托管多个 Rails 应用程序。但遇到了一些相对路径问题。

我已经创建了指向应用程序公共目录的符号链接,并将其放在 /var/www/html 目录中,

var/www/html/
            /test_app (symbolic link to the public folder of test_app) 

并将 apache 设置为

   LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12/ext/apache2/mod_passenger.so
   PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.12
   PassengerRuby /usr/local/bin/ruby

   <VirtualHost *:80>
      ServerName  test.com
      DocumentRoot /var/www/html

      Options Indexes FollowSymLinks -MultiViews

      RailsBaseURI /test_app

      </Location>
   </VirtualHost>

应用程序本身中的链接运行良好,所有链接都确认 test_app/ 目录并运行,但是,当在视图中显示公共目录中的图像时,相对路径就会出错。

说我有

/system/files/1/aaa.png

它会去寻找它

/var/www/html/system/files/1/aaa.png

而不是

/var/www/html/test_app/system/files/1/aaa.png

据我所知,这是一个 Apache 设置问题,而不是 Rails 中要做的事情,如果可能的话,我宁愿将其包含在 apache 的 conf 文件中,而不必更改代码。

答案1

你要机架基URI而不是 RailsBaseURI(>=3.0)

相关内容