类似的问题还有this , this , this , 和 this , 但他们没有解决问题。
我们有一个在开发环境中呈现的本地存储图像。
但是,在生产中,图像不会呈现。从浏览器访问图像 URL 会被重定向到 404 页面,因为由于某种原因找不到图像。同一目录中的其他图像可以毫无问题地呈现。
详细信息:-
将两个图像 URL 直接输入浏览器会产生不同的结果。图片 1 将渲染,但图片 2 不会。图 2 重定向到 404 页面。
这不是缓存问题,在隐身模式下渲染失败。
两个图像都存在于目录中。
这似乎发生在新图像上,尽管模式不明确(即,一些新图像渲染但并非全部渲染)。
图像渲染代码:
<img class="thumbnail" src="<%= design["thumbnailURL"] %>">
其中design["thumbnailURL"]
是图像的相对 URL(确实存在)。我们使用
Rails 3.2
和 Cloudflare。服务器堆栈:
- Passenger AppPreloader 版本:6.0.2
- 实例:ElIQgS48 (nginx/1.15.8 Phusion_Passenger/6.0.2)
- Ruby 版本:ruby 2.1.2p95
- 操作系统:CentOS Linux release 7.6.1810 (Core)
- PHP 7.0.33
- 服务器版本:5.5.60-MariaDB MariaDB服务器
- 后缀 mail_version = 2.10.1
- Dovecot 版本:2.2.36 (1f10bfa63)
最佳答案
如果您将文件托管在公用文件夹中并且不使用 Assets 管道,那么直接提供静态文件通常是 HTTP 网络服务器(apache、nginx ...)的工作。他们做得又好又快。
请提供有关您的生产托管设置(网络服务器、配置等)的更多详细信息,以及 Rails 为您的图片生成的 url。我将使用相关的网络服务器配置相应地更新答案,以便直接提供您的静态文件。
关于html - rails : image exists but is not rendered in production even though rendered in development,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60481426/