嗯,也许这可以给一个线索。在我的虚拟主机上的cPanel中创建Rails应用程序时,为了访问应用程序,您需要创建一个重写规则。我做了什么,但不知道它做了什么。我跟踪它到它创建以下两个文件:
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文件有问题吗? 仅针对域根的重写条件是什么?如果是这样,我怎样才能使它的任何网址?
原帖:
我想部署一个轨网站,本地罚款但不工作在Web服务器上。 Rails应用程序启动正常,我可以访问主页。但在404
我的主页任何其他链接结果设置为从routes.rb
内,像这样:
map.root :controller => "home"
我使用REST风格的路线,并在本地工作正常。在routes.rb
我只有一堆
map.resources :posts
map.resources :images
...
如果我改变map.root
到另一个控制器(即map.root :controller => "posts"
,那么单页将显示效果细腻为好,和所有其他环节会返回404s,包括之前在map.root
中引用的那个之前工作的那个。
这是我的第一个rails部署,所以它可能是我做错了什么。我的web主机技术支持告诉我这是一个编码问题,他们不能帮助我。
我的网站目录结构网上像这样:
/home/mydomain/etc/rails_apps/mysitedir/ <- rails folders (app, config, db, ...)
/home/mydomain/public_html/ <- nothing here
而且,这是在我的轨道公共文件夹中的文件,他们需要保持该文件夹中或者它们应该被放在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/
如果市场是我想从我的主页访问,例如其中一个链接,这是我的一个控制器。
总之,我可以访问的唯一位置是根。
什么我做错了,我让所有这些404? 我没有shell访问,我只有cPanel。这与Ruby 1.8.5和Rails 2.3.4一样,(共享)Web服务器是Linux + Apache 2.2.11(Unix)。
是否会照顾路由的问题,或者它只是为了在公共文件夹(JavaScript,样式表,图像)的东西吗? – JRL 2009-10-05 14:14:39
将这个命令来创建符号链接创建文件的地方,我可以直接创建我的电脑上,并上传到网站? – JRL 2009-10-05 15:06:19
我尝试运行该命令来创建符号链接(使用cronjob,无法访问shell),并返回: ln:为/ home/mydomain/etc/rails_apps创建符号链接'/ home/mydomain/public_html/public'/mysite/public /':文件存在 我想这是一个错误。 那么这是什么意思?而且,在你的语法中,为什么第一个路径以斜线结尾,而第二个路径不是?这是一个错误? – JRL 2009-10-05 15:56:33