我的 Ruby on Rails 应用程序仅在地址包含端口时才有效

我的 Ruby on Rails 应用程序仅在地址包含端口时才有效

我有一个 Ruby on Rails 应用程序,可以在我的笔记本上正常运行(http://本地主机:3000/

如果我在浏览器中写入http://example.com:12007/或者http://www.example.com:12007/所有页面都按预期工作。但如果我写http://example.com/或者http://www.example.com/第一页显示了,但没有任何 css 或图像(就像找不到它们一样)。我可以看到所有文本(甚至是来自我的 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 生成的。

答案1

如果您将浏览器指向 /some_controller 资源,是否可以直接访问它?对于您的 CSS 文件也是如此。您可以发布包含链接/CSS 的 HREF 或 SRC 的 HTML 源代码片段吗?

编辑...

现在我看一下重写规则,它当然不起作用。

^/?$

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

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

它应该勾选。请注意,以上将代理全部请求到 Rails。您可能应该将媒体托管在 Rails 的控制范围之外,但这是读者的练习。

相关内容