После обновления с Magento 2.1.0 до Magento 2.1.3 (с использованием composer) статический контент больше не загружается. В консоли браузера я вижу, что все файлы недоступны (404):
Я не вижу каталогов с именем version*
в pub
каталоге.
Что я уже сделал, но это не помогло:
- установить все разрешения
777
, но безуспешно. - почистил кеш
- удалил
pub/static/*
- регенерированный статический контент несколько раз
- заменил
.htaccess
файл (вpub/static
каталоге) на файл из официального репозитория.
Другая информация:
mod_rewrite
включенFollowSymLinks
разрешено (в конфигурации хоста по умолчанию и локально.htaccess
)- Эта конфигурация работала нормально с Magento 2.1.0 до обновления до 2.1.3
pub/static
доступно для записи
Какие-либо предложения?
magento-2.1
magento-2.1.3
404
static-content
Сергей Учухлебау
источник
источник
Ответы:
Основная проблема была вызвана некорректной работой переписывания (как сказал @Marius). В
RewriteBase
моем каталоге их не было,pub/static/
и Apache не смог найти файлы, потому что искал их в корневой папке. После того, как мы добавили:RewriteBase /pub/static
все начинает работать.Как это работает:
по этому адресу:
перезапись должна работать:
как строка началась с корневой папки:
он не работал и не мог перенаправить в файл, нужно.
Переписать без базы:
Перепишите с базой:
Вот часть моего
.htaccess
файла изpub/static
(переписывает):Как отключить управление версиями статических файлов:
Если вы не хотите использовать статическое управление версиями файлов, вы можете отключить эту функцию в административной области Magento:
Можно изменить этот параметр для области по умолчанию, используя следующий запрос MySQL :
Затем выполните следующую команду, чтобы очистить кеш конфигурации:
PS: Мой ответ актуален для пользователей apache2. Если вы используете NGINX, посмотрите этот ответ (автор @ kevin-javitz)
источник
dev/static/sign
существует, вставьте его.INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
sudo a2enmod rewrite
.Если вы используете Nginx, вот исправление. Вероятно, у вас есть собственный файл conf, вам нужно обновить / static / part этим, они специально обновили его часть: # Удалите подпись статических файлов, которая используется для преодоления раздела кэша браузера:
источник
RewriteRule ^version.+?/(.+)$ $1 [L]
Перейдите в базу данных и вставьте строку в таблицу core_config_data:
источник
Там не должно быть
version*
папка вstatic
папке.Скорее всего, это происходит потому, что у вас не включен mod_rewrite в вашем экземпляре.
Путь
pub/static/version1234/some/asset.js
должен быть переписан наpub/static/some/asset.js
. Версия существует только для истечения срока действия кэша браузера.источник
mod_rewrite
и он включен:[root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OK
в .htaacess он тоже включенFollowSymLinks
это разрешено. Это случилось со мной после установки последней версии с github, и у меня возникла проблема с mod_rewrite и FollowSymLinks.FollowSymLinks
установлено какOptions +FollowSymLinks
и не было проблем с такой же конфигурацией до обновления :(Похоже, что релиз 2.1.3 предполагает значение по умолчанию для
Stores => Configuration => Developer => Static Files Settings => Sign Static Files
установлено в Да.Таким образом, вместо изменения перезаписей можно установить для этой функции значение Нет.
Если это невозможно сделать от администратора, поскольку администратор не может загрузить ресурсы внешнего интерфейса, измените / добавьте этот параметр в
core_config_data
таблицу:Эта проблема также отмечена на Github: https://github.com/magento/magento2/issues/7869
источник
Если вы используете Apache. Вы не должны удалять .htaccess из pub / static. Вы можете получить замену здесь.
источник
RewriteBase
.