1

我需要一些帮助才能让 Rails 3.2 应用程序在 cPanel 配置的 Apache 站点的子 uri 中运行。我已经按照乘客文档和各种博客文章中的步骤进行操作。根操作呈现正常,但每个其他请求都会给我一个 404。

我认为这是 Apache 而不是 Rails 配置中的内容,因为它不是 Rails 应用程序的 404 页面,并且 404 不会在 Rails 日志中留下痕迹。

这是 cPanel 生成的 httpd.conf 中的 vhost 部分:

<VirtualHost myip:443>
    ServerName mysite.org
    ServerAlias www.mysite.org
    DocumentRoot /home/myuser/public_html
    ServerAdmin webmaster@mysite.org
    UseCanonicalName Off
    Options -ExecCGI -Includes
    RemoveHandler cgi-script .cgi .pl .plx .ppl .perl
    CustomLog /usr/local/apache/domlogs/mysite.org combined
    CustomLog /usr/local/apache/domlogs/mysite.org-bytes_log "%{%s}t %I .\n%{%s}t %O ."
    ## User myuser # Needed for CPanel::ApacheConf
    UserDir disabled
    UserDir enabled myuser
    <IfModule mod_suphp.c>
        suPHP_UserGroup myuser myuser
    </IfModule>
    <IfModule !mod_disable_suexec.c>
        <IfModule !mod_ruid2.c>
            SuexecUserGroup myuser myuser
        </IfModule>
    </IfModule>
    <IfModule mod_ruid2.c>
        RUidGid myuser myuser
    </IfModule>
    SSLEngine on

    SSLCertificateFile /etc/ssl/certs/mysite.org.crt
    SSLCertificateKeyFile /etc/ssl/private/mysite.org.key
        SSLCACertificateFile /etc/ssl/certs/mysite.org.cabundle
    CustomLog /usr/local/apache/domlogs/mysite.org-ssl_log combined
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
    <Directory "/home/myuser/public_html/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>
    Include "/usr/local/apache/conf/userdata/ssl/2/myuser/mysite.org/*.conf"

</VirtualHost> 

这是我为 sub-uri 放在一起的包含文件的当前版本:

RewriteEngine On
RewriteOptions Inherit
RailsEnv production

<Directory /home/myuser/public_html>
  Options Indexes FollowSymLinks -MultiViews
  AllowOverride all
  Order allow,deny
  Allow from all
</Directory>

RackBaseURI /home/myrailsapp/current
<Directory /home/myuser/public_html/railsapp>
  Options -MultiViews
</Directory>

/home/myuser/public_html/railsapp 是 /home/myrailsapp/current/public 的符号链接

这是/home/myrailsapp/current/public/.htaccess

RackBaseURI /railsapp
SetEnv GEM_HOME /usr/local/lib/ruby/gems
PassengerEnabled On
PassengerAppRoot /home/myrailsapp/current/

/home/myrailsapp 和 /home/mysite 中的所有文件都归 myuser 所有。(我没有看到任何权限错误。)

在我的路线文件中:

  resources :widgets
  root :to => 'widgets#index'

当我导航到https://mysite.org/railsapp时,它会正确显示小部件索引,包括资产。当我转到https://mysite.org/railsapp/widgetshttps://mysite.org/railsapp/widgets/index时,我得到了 Apache 404,并且在 Rails 日志中没有条目。

我错过了什么?

4

2 回答 2

1

事实证明 /home/myuser/public_html 中的 .htaccess 正在重写所有内容。对 /mysite/railsapp 的请求被豁免,因为它与目录名称匹配。我通过添加解决了这个问题

RewriteEngine off

到 /home/myrailsapp/current/public/.htaccess。

于 2013-04-09T15:04:14.147 回答
1

添加RewriteEngine off.htaccess确实解决了问题。

于 2014-03-11T23:12:30.383 回答