我需要一些帮助才能让 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/widgets或https://mysite.org/railsapp/widgets/index时,我得到了 Apache 404,并且在 Rails 日志中没有条目。
我错过了什么?