Изображения PrestaShop не отображаются при включенном дружественном URL - PullRequest
1 голос
/ 07 мая 2019

После установки нового сертификата SSL и изменения версии PHP с 5.x на 7.1.28 изображения продуктов больше не отображаются во внешнем интерфейсе, инструменты Chrome dev показывают ошибку 404 для файлов изображений. Они видны в бэкэнде под каталогом продукции.

Похоже, что каталог изображений отсутствует, то есть что-то вроде / home-default /, поскольку в коде HTML файл изображения должен находиться непосредственно в корневом каталоге документа, что, очевидно, неверно.

Когда я отключаю "Friendly URL", показываются изображения. Что я пробовал до сих пор:

  1. Удален .htaccess, включен дружественный URL-адрес для восстановления .htaccess
  2. Очистили кеш и восстановили миниатюры изображений
  3. Переключен обратно на PHP 5.4
  4. Добавлен AllowOverride All в конфигурацию vhost

Ничего не помогает. На сервере находится еще одна установка PrestaShop, на которой запущена та же версия PrestaShop 1.6.18 также под PHP 7.1.28, там "Friendly URL" работает нормально.

Я должен сказать, что понятия не имею, где искать эту проблему.

1 Ответ

1 голос
/ 12 мая 2019

Потратив некоторое время с @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, и вы получите отличные результаты.

Если вы выберете это решение, не забудьте установить правила перезаписи PrestaShop непосредственно в Nginx ( Пример ).

...