我有一个 Ruby on Rails 应用程序,可以在我的笔记本上正常运行(http://本地主机:3000/)
- 我将其上传到我的托管服务器上,
- 使用 CPanel X 创建的应用程序的 URL 是http://example.com:12007/
- 重写自http://example.com/到http://example.com:12007/,
- 并启动了它。
如果我在浏览器中写入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 的控制范围之外,但这是读者的练习。