我的Ruby on Rails应用程序只有在地址包含端口的情况下才有效

我有一个Ruby on Rails应用程序,可以在我的笔记本上正常工作( http:// localhost:3000 / )

  • 我上传到我的托pipe服务器上,
  • 用CPanel X创build一个应用程序,URL是http://example.com:12007/
  • 创build了一个从http://example.com/到http://example.com:12007/的重写,
  • 并启动它。

如果我在浏览器中写入http://example.com:12007/或http://www.example.com:12007/,则所有页面均按预期工作。 但是,如果我写http://example.com/或http://www.example.com/显示第一页,但没有任何CSS或图像(就像它不会find它们)。 我可以看到所有的文本(即使是我的MySQL数据库中的文本),但没有格式。 如果我点击任何链接,我得到这样一个错误页面:

Not Found The requested URL /some_controller was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. 

我应该怎么做,使我的网站工作,而无需在地址栏中写入端口


我的/public_html/.htaccess文件的内容是

 RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com$ [OR] RewriteCond %{HTTP_HOST} ^www.example.com$ RewriteRule ^/?$ "http\:\/\/127\.0\.0\.1\:12007%{REQUEST_URI}" [P,QSA,L] 

我猜是由CPanel Rewrites生成的。

如果你把浏览器指向它,你能直接访问/ some_controller资源吗? 对于你的CSS文件也是如此。 你能发布一个包含HREF或SRC的HTML源代码片断吗?

编辑…

现在我看看这个重写规则,当然这是行不通的。

 ^/?$ 

这只会匹配/处的URL。 将其更改为:

 RewriteRule ^(.*)$ http://127.0.0.1:12007/$1 [P,QSA,L] 

它应该打勾。 请注意,上述代理将所有请求代理到Rails。 您应该可以在Rails的控制之外托pipe您的媒体,但这是读者的一个练习。