Statischer Inhalt wird nach dem Upgrade nicht geladen

24

Nach dem Upgrade von Magento 2.1.0 auf Magento 2.1.3 (mit Composer) wird der statische Inhalt nicht mehr geladen. In der Browserkonsole kann ich sehen, dass alle Dateien nicht verfügbar sind (404):

Dateien nicht verfügbar Vorschau

Ich sehe keine Verzeichnisse mit dem Namen version*im pubVerzeichnis.

Was ich schon gemacht habe aber es hat nicht geholfen:

  1. setze alle Berechtigungen auf 777, aber ohne Erfolg.
  2. Cache gesäubert
  3. entfernte die pub/static/*
  4. Der statische Inhalt wurde einige Male regeneriert
  5. Die .htaccessDatei (im pub/staticVerzeichnis) wurde durch die Datei aus einem offiziellen Repository ersetzt.

Noch eine Info:

  • mod_rewrite aktiviert
  • FollowSymLinksist erlaubt (in der Standard-Host-Konfiguration und lokal .htaccess)
  • Diese Konfiguration funktionierte gut mit Magento 2.1.0 vor dem Update auf 2.1.3
  • pub/static ist beschreibbar

Irgendwelche Vorschläge?

Siarhey Uchukhlebau
quelle
Haben Sie statische Inhalte erneut bereitgestellt?
Eamonn
Ja, ich habe es viele Male ohne Erfolg gemacht
Siarhey Uchukhlebau
Ich habe das gleiche Problem, gestimmt. In meinem Fall verwende ich Nginx und die gleichen Conf-Dateien. Die Aktualisierung wurde mit dem Komponisten durchgeführt, und es wurden dieselben Schritte ausgeführt wie bei @SiarheyUchukhlebau
Kevin Chavez,
Ach je. Plötzlich das gleiche Problem, aber mit Apache. Durch das Löschen von pub / static wird es deaktiviert, und ich kann es anscheinend nicht beheben.
Eamonn
Möglicherweise haben Sie unten eine Lösung gefunden.
Eamonn

Antworten:

28

Das Hauptproblem wurde durch die fehlerhafte Umschreibearbeit verursacht (wie @Marius mitteilte). Es gab keine RewriteBase in meinem Verzeichnis pub/static/und Apache konnte die Dateien nicht finden, weil im Stammordner nach ihnen gesucht wurde. Nachdem wir hinzugefügt haben: RewriteBase /pub/staticAlles beginnt zu funktionieren.

Wie es funktioniert hat:

von dieser Adresse:

http: //m2.uchuhlebov.web.ra/pub/static/version1481885888/frontend/Magento/luma/en_US/mage/requirejs/mixins.js

Das Umschreiben sollte funktionieren:

RewriteRule ^version.+?/(.+)$ $1 [L]

Als die Zeile vom Stammordner aus gestartet wurde:

/pub/static/version...

Es hat nicht funktioniert und konnte nicht auf die Datei umleiten, die benötigt wird.

Ohne Basis umschreiben:

Umschreiben funktioniert nicht

Mit Basis neu schreiben:

umschreiben funktioniert

Hier ein Teil meiner .htaccessDatei aus dem pub/static(umschreibt):

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /pub/static
    # Remove signature of the static files that is used to overcome the browser cache
    RewriteRule ^version.+?/(.+)$ $1 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule .* ../static.php?resource=$0 [L]
</IfModule>

So deaktivieren Sie die Versionsverwaltung für statische Dateien:

Wenn Sie die Versionsverwaltung für statische Dateien nicht verwenden möchten, können Sie diese Funktion im Magento-Administrationsbereich deaktivieren:

config

Es ist möglich, diese Einstellung für den Standardbereich mit der folgenden MySQL-Abfrage zu ändern :

INSERT INTO `core_config_data`(`path`, `value`) VALUES ('dev/static/sign', 0) ON DUPLICATE KEY UPDATE `value`=0

Führen Sie dann den nächsten Befehl aus, um einen Konfigurationscache zu löschen:

bin/magento cache:clean config

PS: Meine Antwort ist für die Benutzer von apache2 aktuell. Wenn Sie NGINX verwenden, lesen Sie diese Antwort (von @ kevin-javitz)

Siarhey Uchukhlebau
quelle
Wenn dev/static/signin vorhanden ist, fügen Sie es ein. INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
Dhaduk Mitesh
Auf Apache2-Systemen müssen Sie mod_rewrite aktivieren mit: - sudo a2enmod rewrite.
Dallas Clarke
8

Wenn Sie Nginx ausführen, finden Sie hier das Update. Sie haben wahrscheinlich Ihre eigene conf-Datei, Sie müssen den / static / Teil damit aktualisieren, sie haben einen Teil davon speziell aktualisiert:

location /static/ {
    # Uncomment the following line in production mode
    # expires max;

    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
        rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
        add_header Cache-Control "public";
        add_header X-Frame-Options "SAMEORIGIN";
        expires +1y;

        if (!-f $request_filename) {
            rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
        }
    }
    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
        add_header Cache-Control "no-store";
        add_header X-Frame-Options "SAMEORIGIN";
        expires    off;

        if (!-f $request_filename) {
           rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
        }
    }
    if (!-f $request_filename) {
        rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
    }
    add_header X-Frame-Options "SAMEORIGIN";
}
Kevin Chavez
quelle
Zusätzlicher Hinweis, wenn Sie Apache verwenden, stellen Sie sicher, dass Sie dies in Ihrer Kneipe / statischen / .htaccess-Zeile 16 haben:RewriteRule ^version.+?/(.+)$ $1 [L]
Kevin Chavez
Vielen Dank für Ihre Antwort, es hat mich auf die richtige Lösung des Problems hingewiesen. Ich benutze Apache und die Lösung ist anders, aber ich bin dir trotzdem dankbar.
Siarhey Uchukhlebau
Du bist ein Leben sicherer! Ich habe meinen Kopf gegen die Wand geschlagen! Kann bestätigen, dass es für mein Nginx Magento 2.1.3
Cudos
6

Gehen Sie zur Datenbank und fügen Sie eine Zeile in die Tabelle core_config_data ein:

INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0');
Saphal Jha
quelle
Genial!! Vielen Dank.
01.
4

version*Der staticOrdner sollte keinen Ordner enthalten.
Dies liegt höchstwahrscheinlich daran, dass in Ihrer Instanz mod_rewrite nicht aktiviert ist.
Der Pfad pub/static/version1234/some/asset.jssollte neu geschrieben werden pub/static/some/asset.js. Das Versionsding gibt es nur für den Cache-Ablauf des Browsers.

Marius
quelle
Ich überprüfe mod_rewrite und es ist aktiviert: [root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OKin der .htaacess ist es auch aktiviert
Siarhey Uchukhlebau
Stellen Sie sicher, dass dies FollowSymLinkszulässig ist. Dies passierte mir nach der Installation der neuesten Version von Github und ich hatte ein Problem mit dem mod_rewrite und mit den FollowSymLinks.
Marius
In der Umschreibe-Sektion FollowSymLinksist festgelegt wie Options +FollowSymLinksund es gab kein Problem mit der gleichen Konfiguration vor der
Aktualisierung
4

In Version 2.1.3 wird anscheinend davon ausgegangen, dass der Standardwert für " Stores => Configuration => Developer => Static Files Settings => Sign Static FilesJa" lautet.

Anstatt die Umschreibungen zu ändern, können Sie diese Funktion auf Nein setzen.

Wenn dies vom Administrator aus nicht möglich ist, da der Administrator die Frontend-Assets nicht laden kann, ändern / fügen Sie diese Einstellung in die core_config_dataTabelle ein:

scope: default
scope_id: 0
Pfad: dev / static / sign
Wert: 0

Dieses Problem wird auch bei Github festgestellt: https://github.com/magento/magento2/issues/7869

nbjohan
quelle
2

Wenn Sie Apache verwenden. Sie dürfen die .htaccess-Datei nicht aus pub / static löschen. Hier können Sie einen Ersatz bekommen .

Eamonn
quelle
Vielen Dank. Ich habe diese Datei bereits ersetzt, aber das Problem war falsch RewriteBase.
Siarhey Uchukhlebau