修改
好吧也许这可以给出一个线索。在我的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创建它?
原帖:
我正在尝试部署一个在本地运行良好的rails网站,但不能在Web服务器上运行。 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
中引用的那个。
这是我的第一次部署,所以可能是我做错了。我的网站托管技术支持人员告诉我这是一个编码问题,他们无法帮助我。
我的网站目录结构如下:
/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/
例如,市场是我尝试从我的主页访问的链接之一,而且它是我的控制器之一。
简而言之,我可以访问的唯一位置是root。
我得到所有这些404的错误是什么? 我没有shell访问权限,我只有cPanel。这是使用Ruby 1.8.5和Rails 2.3.4,(共享)Web服务器是Linux + Apache 2.2.11(Unix)。
答案 0 :(得分:0)
你需要让你的web root指向/ home / mydomain / etc / rails_apps / mysitedir / public /也许这可以在cpanel中配置?
如果你可以访问shell,你会做类似的事情(语法可能略有不同):
ln -s /home/mydomain/etc/rails_apps/mysitedir/public/ /home/mydomain/public_html
请注意,您需要首先删除public_html,您应该验证这不会产生负面影响。
答案 1 :(得分:0)
问题在于我的网站托管服务商。他们还没有解决。
答案 2 :(得分:0)
我遇到了完全相同的问题并找到了修复方法。在.htaccess文件中,删除第一个'$',以便:
RewriteRule ^/? "http\:\/\/127\.0\.0\.1\:12030%{REQUEST_URI}" [P,QSA,L]
第一位是Regex,所以$匹配URL的结尾。
作为一个侧面咆哮,这是我今天必须解决的第五个问题,因为cPanel很糟糕。