PrestaShop 图像在 friendly-URL 开启时不显示

PrestaShop images not showing when friendly-URL is switched on

安装新的 SSL 证书并将 PHP 版本从 5.x 更改为 7.1.28 后,前端不再显示产品图片,Chrome 开发工具显示图像文件的 404 错误。 它们在产品目录下的后端可见。

看起来好像缺少图像目录,例如 /home-default/ 因为在 HTML 代码中图像文件应该直接位于文档根目录中,这显然是错误的.

当我关闭时 "Friendly URL" 会显示图像。 到目前为止我尝试了什么:

  1. 已删除 .htaccess,将 Friendly URL 切换为打开以重新生成 .htaccess
  2. 清空缓存并重新生成图像缩略图
  3. 切换回 PHP 5.4
  4. 已将 AllowOverride All 添加到虚拟主机配置

没有任何帮助。服务器上安装了另一个 PrestaShop,运行 同样的 PrestaShop 版本 1.6.18 也在 PHP 7.1.28 下,"Friendly URL" 工作正常。

我必须说我不知道​​去哪里解决这个问题。

在与@Harry 一起调试他的配置后,我们找到了解决方案,我相信这会对其他人有所帮助。

@Harry 正在使用 Nginx + Apache 的组合。

  1. 我们检查了他的 PrestaShop .htaccess 文件并确保 RewriteEngine 已打开并正确触发(例如,页面已正确重写,只有图像没有)- 一切正常。
  2. 我们尝试为自己编写一个基本的 RewriteRule 来重定向 .jpg 但它不起作用,显示 Nginx 404 页面。
  3. 我们得出的结论是 Nginx 正在处理所有静态内容(JS、CSS、JPEG 等),而不是将其转发给 Apache。

解决方案

我们从 Nginx 配置中删除了这部分:

location ~ ^/(.*\.(ac3|avi|bmp|bz2|cue|dat|doc|docx|dts|eot|exe|flv|gz|htm|html|img|iso|jpeg|mkv|mp3|mp4|mpeg|mpg|ogg|ppt|pptx|qt|rar|rm|swf|tar|tgz|ttf|txt|wav|xls|xlsx|zip))$ {
                try_files $uri @fallback;
}

作为一般性建议,我建议不要使用 Apache+Nginx,PrestaShop 已经可以很好地与 Nginx+PHP-FPM 配合使用,您将获得出色的性能。

如果您选择此解决方案,请不要忘记直接在 Nginx 中设置您的 PrestaShop 重写规则 (Example)。