代码之家  ›  专栏  ›  技术社区  ›  JRL

资源映射在本地工作,但不能在Web服务器上工作

  •  0
  • JRL  · 技术社区  · 15 年前

    编辑:

    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都没有,我得到了Apache404(不是Rails404)。.htaccess文件中是否有错误? 重写条件是否仅适用于域根?如果是,我如何为任何URL创建它?

    原职:

    我正在尝试部署一个rails网站,它可以在本地正常工作,但不能在web服务器上工作。 rails应用程序启动良好,我可以访问主页。但任何其他链接都会导致404。

    我的主页是从内部设置的 routes.rb 像这样:

      map.root :controller => "home"
    

    我使用的是RESTful路线,在本地运行良好。在里面 我只有一堆

    map.resources :posts
    map.resources :images
    

    ...

    如果我改变主意 map.root 到另一个控制器(即 map.root :controller => "posts" ,则该单个页面也将显示良好,所有其他链接将返回404,包括以前在中引用的链接 根映射 .

    这是我第一次部署rails,所以可能是我做错了什么。我的网络主机技术支持人员告诉我这是一个编码问题,他们帮不了我。

    我的在线网站目录结构如下:

    /home/mydomain/etc/rails_apps/mysitedir/  <- rails folders (app, config, db, ...)
    /home/mydomain/public_html/  <- nothing here
    

    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/
    

    例如,Where market是我试图从主页访问的链接之一,它是我的控制器之一。

    我得到所有这些404,我做错了什么? 我没有shell访问权限,我只有cPanel。这是在Ruby1.8.5和Rails2.3.4中,共享的web服务器是Linux+Apache2.2.11(Unix)。

    3 回复  |  直到 15 年前
        1
  •  0
  •   Roger Ertesvag    15 年前

    你需要让你的网站根指向/home/mydomain/etc/rails\u apps/mysitedir/public/也许可以在cpanel中配置?

    如果可以访问shell,您可以执行以下操作(语法可能略有不同):

    ln -s /home/mydomain/etc/rails_apps/mysitedir/public/ /home/mydomain/public_html
    

    请注意,您需要首先删除public_html,您应该验证这不会产生任何负面后果。

        2
  •  0
  •   JRL    14 年前

    问题在于我的网络主机。他们还没有解决。

        3
  •  0
  •   rogueg    14 年前

    RewriteRule ^/? "http\:\/\/127\.0\.0\.1\:12030%{REQUEST_URI}" [P,QSA,L]
    

    第一位是正则表达式,因此$匹配URL的结尾。

    作为旁白,这是我今天不得不解决的第无数个问题,因为cPanel太差劲了。