Il contenuto statico non viene caricato dopo l'aggiornamento


25

Dopo l'aggiornamento da Magento 2.1.0 a Magento 2.1.3 (utilizzando il compositore) il contenuto statico non viene più caricato. Nella console del browser posso vedere che tutti i file non sono disponibili (404):

anteprima file non disponibile

Non vedo le directory con il nome version*nella pubdirectory.

Quello che ho già fatto ma non ha aiutato:

  1. impostare tutte le autorizzazioni su 777, ma senza successo.
  2. cache pulita
  3. rimosso il pub/static/*
  4. contenuto statico rigenerato alcune volte
  5. sostituito il .htaccessfile (nella pub/staticdirectory) con il file da un repository ufficiale.

Un'altra informazione:

  • mod_rewrite è abilitato
  • FollowSymLinksè consentito (nella configurazione host predefinita e locale .htaccess)
  • Questa configurazione ha funzionato bene con Magento 2.1.0 prima dell'aggiornamento alla 2.1.3
  • pub/static è scrivibile

Eventuali suggerimenti?


Hai ridistribuito il contenuto statico?
Eamonn,

Sì, l'ho fatto molte volte senza successo
Siarhey Uchukhlebau il

Sto riscontrando lo stesso problema, votato. Nel mio caso sto usando Nginx e gli stessi file conf. L'aggiornamento è stato fatto usando il compositore e ha fatto gli stessi passaggi di @SiarheyUchukhlebau
Kevin Chavez,

Oh caro. Improvvisamente ha avuto lo stesso problema, ma usando Apache. La cancellazione di pub / static lo ha disattivato e non riesco a risolverlo.
Eamonn,

Potrebbe aver trovato una soluzione di seguito.
Eamonn,

Risposte:


28

Il problema principale è stato causato dal lavoro di riscrittura errato (come ha detto @Marius). Non ce n'era RewriteBase nella mia directory pub/static/e Apache non riusciva a trovare i file perché cercati dalla cartella principale. Dopo aver aggiunto: RewriteBase /pub/statictutto inizia a funzionare.

Come ha funzionato:

da questo indirizzo:

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

la riscrittura dovrebbe funzionare:

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

come la linea è iniziata dalla cartella principale:

/pub/static/version...

non ha funzionato e non è stato possibile reindirizzare al file, necessario.

Riscrivi senza base:

la riscrittura non funziona

Riscrivi con base:

riscrivi opere

Ecco una parte del mio .htaccessfile dal pub/static(riscrive):

<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>

Come disabilitare il controllo delle versioni dei file statici:

Se non si desidera utilizzare il controllo delle versioni dei file statici, è possibile disabilitare questa funzione nell'area di amministrazione di Magento:

config

È possibile modificare questa impostazione per ambito predefinito utilizzando la seguente query MySQL :

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

Quindi eseguire il comando successivo per cancellare una cache di configurazione:

bin/magento cache:clean config

PS: la mia risposta è effettiva per gli utenti di apache2. Se stai usando NGINX vedi questa risposta (di @ kevin-javitz)


se dev/static/signesiste esiste quindi inserirlo. INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
Dhaduk Mitesh,

Sui sistemi apache2, devi abilitare mod_rewrite con: - sudo a2enmod rewrite.
Dallas Clarke,

8

Se stai eseguendo Nginx, ecco la soluzione. Probabilmente hai il tuo file conf, devi aggiornare / static / part con questo, ne hanno aggiornato una parte in particolare: # Rimuovi la firma dei file statici che viene utilizzata per superare la sezione cache del browser:

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";
}

Nota aggiuntiva, se stai usando apache assicurati di averlo nel tuo pub / static / .htaccess line 16:RewriteRule ^version.+?/(.+)$ $1 [L]
Kevin Chavez il

Grazie per la tua risposta, mi ha indicato la soluzione corretta del problema. Uso Apache e la soluzione è diversa, ma ti sono comunque grato.
Siarhey Uchukhlebau,

Sei una vita più sicura! Stavo sbattendo la testa contro il muro! Posso confermare che funziona per il mio nginx Magento 2.1.3
Cudos

6

Vai al database e inserisci una riga nella tabella core_config_data:

INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0');

Eccezionale!! Grazie.
lkk

4

Non ci dovrebbe essere una version*cartella nella staticcartella.
Questo molto probabilmente accade perché non hai abilitato mod_rewrite nella tua istanza.
Il percorso pub/static/version1234/some/asset.jsdeve essere riscritto pub/static/some/asset.js. La versione della versione è lì solo per la scadenza della cache del browser.


Controllo mod_rewrite ed è abilitato: [root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OKnel .htaacess è abilitato anche
Siarhey Uchukhlebau il

assicurarsi che FollowSymLinkssia permesso. Questo mi è successo dopo aver installato l'ultima versione di github e ho avuto un problema con mod_rewrite e con FollowSymLinks.
Marius

Nella sezione di riscrittura FollowSymLinksè impostato come Options +FollowSymLinkse non c'era nessun problema con la stessa configurazione prima
dell'aggiornamento

4

Sembra che la versione 2.1.3 presupponga che il valore predefinito Stores => Configuration => Developer => Static Files Settings => Sign Static Filessia impostato su Sì.

Quindi, invece di modificare le riscritture, è possibile impostare questa funzione su No.

Se non è possibile farlo dall'amministratore, poiché l'amministratore non riesce a caricare gli asset front-end, modificare / aggiungere questa impostazione nella core_config_datatabella:

scope: default
scope_id: 0
path: dev / static / sign
value: 0

Questo problema è anche presente su Github: https://github.com/magento/magento2/issues/7869


2

Se stai usando apache. Non è necessario eliminare .htaccess da pub / static. Puoi ottenere una sostituzione qui.


Grazie. Ho già sostituito quel file, ma il problema era errato RewriteBase.
Siarhey Uchukhlebau,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.