Изображение Prestashop не загружается должным образом после использования компакт-диска
Я недавно пытался отключить часть HTTP-запроса изображений в CDN (используя S3).
мой cdn находится на s3.mydomain.com
Как только я добавил медиа-сервер, все выглядит хорошо (CSS, JavaScript). Однако есть одна проблема. Я получаю недостающее изображение для всего изображения моего продукта.
Я пробовал следующее:
- Выключил дружественный URL -> тогда все работает как шарм. Изображение товара может отображаться (но только когда дружественный URL отключен.
- Восстановить миниатюры -> Все еще получить недостающее изображение.
- Переместить изображение -> Все еще получить недостающее изображение.
Полный URL с включенным "Дружественным URL": http://xx.bro.do/2579-product_list_default/langdon-parka-black.jpg (не работает)
Если "Дружественный URL" отключен, он становится: http://xx.bro.do/img/p/2/5/7/9/2579-product_list_default.jpg
Итак, каким-то образом "Дружественный URL" не перенаправляется должным образом на "Недружественный URL"
Ниже приведен фрагмент моего.htaccess
# Images
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^xx.bro.do$ [OR]
RewriteCond %{HTTP_HOST} ^brodo.dev$
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9$10.jpg [L]
Другое решение, которое будет работать на 100%, - это изменение фактического кода в следующих файлах:
- product.tpl
- продукт-list.tpl
- и в значительной степени остальные файлы, в которых отсутствует изображение продукта.
Это последнее усилие, которое я стараюсь избегать просто потому, что если шаблон изменится в будущем, тогда кто-то должен будет повторить работу снова.
Так кто-нибудь знает, как это исправить? Я ценю любую помощь.
1 ответ
Этот метод работал для меня.
Шаг 1: Включите дружественный URL. проверьте все работает нормально без медиа-сервера. Убедитесь, что дружественный включен и медиа-сервер отключен
когда работает шаг 1, вы увидите URL своих продуктов как http://ec2.aws.XXXXXXXXX.com/1-large_default/faded-short-sleeves-tshirt.jpg
Шаг 2: включите медиа-сервер сейчас. я использую cloudfront в качестве CDN и S3 в качестве ведра
когда медиа-сервер включен
вы столкнетесь с 2 сценариями
1.css и js не загружаются и даже изображения не загружаются
2. Изображения будут загружаться, но CSS и JS не будут загружаться
исправить это: перейти к Расширенные параметры -> Преформативность -> CCC (объединить сжатие и кеш)
Умный кеш для CSS - выберите нет, если это да.
Умный кеш для JavaScript - выберите нет, если это да.
После этого перезагрузите страницу. сайт выглядит нормально..
но на этом этапе вы можете столкнуться с еще 2 сценариями
1.css, js, изображения все загружены правильно, но изображения продукта не загружаются.
2. все загружается правильно, и ваш сайт готов к работе. без каких-либо дальнейших изменений.
если вы противостоите 1-му сценарию, выполните следующие действия.
Шаг 1 откройте ваш ftp-клиент и перейдите в папку apache, обычно она будет находиться в rootofserver/etc/apache/
in my case it is rootofserver/etc/httpd
в вашем случае это может быть так же, или это может быть
rootofserver/etc/apahce/
or rootofserver/etc/apahce2/
шаг 2 как только вы внутри папки откройте файл httpd.conf в любом редакторе, который вам нравится..
опять в моем случае
its httpd.conf it might be same or it will be
apaceh2.conf or apache.conf
Шаг 3 После того как вы открыли файл в любом из текстовых редакторов
найдите эти строки ниже и Allowoverride установите его на All, если его нет. (убедитесь, что "а" является столицей)
DocumentRoot "/var/www/html"
#
# Each directory to which Apache has access can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).
#
# First, we configure the "default" to be a very restrictive set of
# features.
#
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
затем найдите этот набор строк и установите для параметра Allowoverride значение All (убедитесь, что "a" является заглавной)
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All
Как только вы закончили редактирование этого файла... загрузите его обратно на сервер или, если вы можете сохранить его на самом сервере, сделайте это. после загрузки обратно на сервер обязательно проверьте этот файл еще раз. если он имеет отредактированные изменения. если не открытая замазка или какой-либо инструмент командной строки вы используете и установите
chmod 0666 to the file
команда
"sudo chmod 0666 /etc/httpd/httpd.conf"
Скопируйте, вставьте и нажмите Enter в командной строке интерфейса. Убедитесь, что имя файла такое же, как на вашем сервере. а также маршрут.
Если даже после всех этих изменений изображения вашего продукта все еще не загружаются, то
Перейдите в консоль cdn и установите источник в качестве самого веб-сервера. не используйте ведро s3.
Например, если доменное имя вашего сайта (в процессе разработки) может быть
ec2.userxxxxxxxx.aws.com (if amazon ec2)
или любой другой сервис, если вы используете это имя в качестве источника для вашего cdn. так как это будет синхронизировать файлы между вашим сервером и cdn, где в качестве корзины s3 вы должны вручную обновить основную копию вашего сайта (есть способы добиться синхронизации между s3 и сервером, но я еще не пробовал)
следуйте этим шагам, и это может привести к нормальной работе вашего сайта. Это отлично сработало для меня, и теперь сайт работает с URL и медиасервером.