【发布时间】:2010-01-18 07:26:52
【问题描述】:
编辑:
也许这可以提供线索。在我的 Web 主机上的 cPanel 中创建 Rails 应用程序时,为了访问该应用程序,您需要创建一个重写规则。我做了,但不知道它做了什么。我追踪到它创建了以下 2 个文件:
home/mydomain/public_html/.htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mydomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.mydomain.com$
RewriteRule ^/?$ "http\:\/\/127\.0\.0\.1\:12030%{REQUEST_URI}" [P,QSA,L]
和
home/mydomain/.cpanel/ruby-on-rails-rewrites.db:
appname: helloworld
domain: mydomain.com
port: 12030
rewritebasepath: /home/mydomain/public_html
url:
似乎根 URL 被发送到 Rails,但任何其他 URL 都没有,我得到一个 Apache 404(不是 Rails 404)。 .htaccess 文件有问题吗? 重写条件是否仅适用于域根?如果是,我怎样才能为任何 URL 制作它?
原帖:
我正在尝试部署一个可以在本地正常运行但不能在 Web 服务器上运行的 Rails 网站。 rails 应用程序启动正常,我可以访问主页。但任何其他链接都会导致 404。
我的主页是从routes.rb 中设置的,如下所示:
map.root :controller => "home"
我正在使用 RESTful 路由,它在本地运行良好。在routes.rb 我只有一堆
map.resources :posts
map.resources :images
...
如果我将map.root 更改为另一个控制器(即map.root :controller => "posts",则该单个页面也将正常显示,并且所有其他链接将返回 404,包括之前在其中引用时有效的链接map.root.
这是我的第一次 Rails 部署,所以可能是我做错了什么。我的虚拟主机技术支持告诉我这是一个编码问题,他们帮不了我。
我的网上网站目录结构是这样的:
/home/mydomain/etc/rails_apps/mysitedir/ <- rails folders (app, config, db, ...)
/home/mydomain/public_html/ <- nothing here
此外,我的 rails 公共文件夹中的文件是否需要保留在该文件夹中,还是应该放在网络上的 public_html 文件夹中?因为现在他们也没有找到。如果我将它们放在public_html 文件夹中,它们可以从主页(javascript、css 和图像)中找到。
在我的 cPanel 错误日志中,它显示如下错误:
[Mon Oct 05 08:19:41 2009] [error] [client XX.XX.XX.XX]
File does not exist: /home/mydomain/public_html/market,
referer: http://www.mydomain.com/
例如,market 是我试图从我的主页访问的链接之一,它是我的控制器之一。
简而言之,我可以访问的唯一位置是根目录。
得到所有这些 404,我做错了什么? 我没有 shell 访问权限,我只有 cPanel。这是 Ruby 1.8.5 和 Rails 2.3.4,(共享)Web 服务器是 Linux + Apache 2.2.11 (Unix)。
【问题讨论】: