Po aktualizacji z Magento 2.1.0 do Magento 2.1.3 (przy użyciu kompozytora) zawartość statyczna nie jest już ładowana. W konsoli przeglądarki widzę, że wszystkie pliki są niedostępne (404):
Nie widzę katalogów z nazwą version*
w pub
katalogu.
Co już zrobiłem, ale to nie pomogło:
- ustaw wszystkie uprawnienia na
777
, ale bez powodzenia. - wyczyszczona pamięć podręczna
- usunięto
pub/static/*
- zregenerowana zawartość statyczna kilka razy
- zastąpił
.htaccess
plik (wpub/static
katalogu) plikiem z oficjalnego repozytorium.
Kolejna informacja:
mod_rewrite
jest włączonyFollowSymLinks
jest dozwolone (w domyślnej konfiguracji hosta i lokalnej.htaccess
)- Ta konfiguracja działała dobrze z Magento 2.1.0 przed aktualizacją do wersji 2.1.3
pub/static
jest zapisywalny
Jakieś sugestie?
magento-2.1
magento-2.1.3
404
static-content
Siarhey Uchukhlebau
źródło
źródło
Odpowiedzi:
Główny problem był spowodowany nieprawidłową pracą przepisywania (jak powiedział @Marius). W
RewriteBase
moim katalogupub/static/
nie było i Apache nie mógł znaleźć plików, ponieważ szukał ich z folderu głównego. Po dodaniu:RewriteBase /pub/static
wszystko zaczyna działać.Jak to działało:
pod tym adresem:
przepisywanie powinno działać:
gdy linia zaczynała się od folderu głównego:
nie zadziałało i nie mogło przekierować do pliku, potrzebne.
Przepisz bez bazy:
Przepisz z bazą:
Oto część mojego
.htaccess
pliku zpub/static
(przepisuje):Jak wyłączyć wersjonowanie plików statycznych:
Jeśli nie chcesz używać wersji plików statycznych, możesz wyłączyć tę funkcję w obszarze administracyjnym Magento:
Można zmienić to ustawienie dla zakresu domyślnego za pomocą następującego zapytania MySQL :
Następnie wykonaj następne polecenie, aby wyczyścić pamięć podręczną konfiguracji:
PS: Moja odpowiedź jest aktualna dla użytkowników apache2. Jeśli używasz NGINX, zobacz tę odpowiedź (autor: @ kevin-javitz)
źródło
dev/static/sign
istnieje, wstaw go.INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
sudo a2enmod rewrite
.Jeśli korzystasz z Nginx, oto poprawka. Prawdopodobnie masz swój własny plik conf, musisz go zaktualizować / static / part, zaktualizowali jego część w szczególności: # Usuń podpis plików statycznych, które są używane do przezwyciężenia sekcji pamięci podręcznej przeglądarki:
źródło
RewriteRule ^version.+?/(.+)$ $1 [L]
Przejdź do bazy danych i wstaw wiersz do tabeli core_config_data:
źródło
version*
Folder nie powinien znajdować się wstatic
folderze.Najprawdopodobniej dzieje się tak, ponieważ nie masz włączonego mod_rewrite w swoim wystąpieniu.
Ścieżka
pub/static/version1234/some/asset.js
powinna zostać przepisana napub/static/some/asset.js
. Ta wersja jest dostępna tylko dla wygasania pamięci podręcznej przeglądarki.źródło
mod_rewrite
i jest włączony:[root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OK
w .htaacess jest również włączonyFollowSymLinks
jest to dozwolone. Zdarzyło mi się to po zainstalowaniu najnowszej wersji z github i miałem problem z mod_rewrite i FollowSymLinks.FollowSymLinks
jest ustawiony jakoOptions +FollowSymLinks
i nie było problemu z tą samą konfiguracją przed aktualizacją :(Wygląda na to, że wersja 2.1.3 zakłada, że wartość domyślna dla
Stores => Configuration => Developer => Static Files Settings => Sign Static Files
jest ustawiona na Tak.Zamiast zmiany przepisywania możliwe jest ustawienie tej funkcji na Nie.
Jeśli nie jest to możliwe od administratora, ponieważ administrator nie ładuje zasobów interfejsu użytkownika, zmień / dodaj to ustawienie w
core_config_data
tabeli:Ten problem został również odnotowany w Github: https://github.com/magento/magento2/issues/7869
źródło
Jeśli używasz apache. Nie wolno usuwać pliku .htaccess z pub / static. Możesz uzyskać zastępstwo tutaj.
źródło
RewriteBase
.