为什么rails app显示/公共索引列表而不是实际的应用程序?

use*_*455 3 apache ruby-on-rails virtualhost

一旦它在服务器上,你如何设置apache来显示rails应用程序?我的rails应用程序在localhost上完美运行,但是当我访问外部站点时,它会为我提供索引信息

像这样

Name    Last modified   Size    Description
[TXT]   404.html    21-May-2012 21:38   728      
[TXT]   422.html    21-May-2012 21:38   711      
[TXT]   500.html    21-May-2012 21:38   643      
[IMG]   favicon.ico 21-May-2012 21:38   0    
[TXT]   robots.txt  21-May-2012 21:38   204      
Run Code Online (Sandbox Code Playgroud)

这是我的虚拟主机信息

<VirtualHost *:80>
      ServerAdmin example@example.com
      ServerName server.example.com
      # ServerAlias
      DocumentRoot /var/www/sample_app/current/public
      ErrorLog /var/www/sample_app/error.log

          RailsEnv production
        <Directory "/var/www/sample_app/current/public">
          Options Indexes FollowSymLinks MultiViews
          Order allow,deny
          Allow from all
        </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Oli*_*nce 7

好吧可能不是,但这是Passenger的文档推荐的内容:

<VirtualHost *:80>
    ServerName www.mycook.com
    DocumentRoot /webapps/mycook/public
    <Directory /webapps/mycook/public>
        Allow from all
        Options -MultiViews
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

明确指出MultiViews 与Passenger 兼容.

所以你可以尝试:

  • 删除索引选项
  • 指定-MultiViews而不是MultiViews

说实话,我已经尝试将索引添加到我的生产应用程序中,因为我认为可能只是导致问题的这个选项,但它没有改变任何东西......所以这有点"疯狂猜测" "它可能会解决你的问题.

更新另一个答案,您可以尝试添加PassengerResolveSymlinksInDocumentRoot选项:

<VirtualHost *:80>
    ServerName www.mycook.com
    DocumentRoot /webapps/mycook/public
    <Directory /webapps/mycook/public>
        Allow from all
        Options -MultiViews
        PassengerResolveSymlinksInDocumentRoot on
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)