Konten Statis tidak dimuat setelah peningkatan

25

Setelah memutakhirkan dari Magento 2.1.0 ke Magento 2.1.3 (menggunakan komposer) konten statis tidak memuat lagi. Di konsol browser saya dapat melihat bahwa semua file tidak tersedia (404):

file tidak tersedia pratinjau

Saya tidak melihat direktori dengan nama version*di pubdirektori.

Apa yang sudah saya buat tetapi tidak membantu:

  1. atur semua izin 777, tetapi tidak berhasil.
  2. cache dibersihkan
  3. menghapus pub/static/*
  4. membuat konten statis beberapa kali
  5. mengganti .htaccessfile (dalam pub/staticdirektori) dengan file dari repositori resmi.

Info lain:

  • mod_rewrite diaktifkan
  • FollowSymLinksdiizinkan (dalam konfigurasi host default dan lokal .htaccess)
  • Konfigurasi ini bekerja dengan baik dengan Magento 2.1.0 sebelum memperbarui ke 2.1.3
  • pub/static dapat ditulis

Ada saran?

Siarhey Uchukhlebau
sumber
Apakah Anda memindahkan konten statis?
Eamonn
Ya, saya melakukannya berkali-kali tanpa hasil
Siarhey Uchukhlebau
Saya mengalami masalah yang sama, terangkat. Dalam kasus saya, saya menggunakan Nginx dan file conf yang sama. Pembaruan dilakukan menggunakan komposer, dan melakukan langkah yang sama seperti @SiarheyUchukhlebau lakukan
Kevin Chavez
Oh sayang. Tiba-tiba mendapat masalah yang sama, tetapi menggunakan Apache. Menghapus pub / statis mematikannya dan sepertinya saya tidak bisa memperbaikinya.
Eamonn
Mungkin sudah menemukan solusi di bawah ini.
Eamonn

Jawaban:

28

Masalah utama disebabkan oleh pekerjaan penulisan ulang yang salah (seperti yang dikatakan @Marius). Tidak ada RewriteBase dalam direktori saya pub/static/dan Apache tidak dapat menemukan file karena mencari mereka dari folder root. Setelah kami tambahkan: RewriteBase /pub/staticsemuanya mulai bekerja.

Bagaimana cara kerjanya:

dengan alamat ini:

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

penulisan ulang harus bekerja:

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

sebagai baris dimulai dari folder root:

/pub/static/version...

itu tidak berfungsi dan tidak bisa mengalihkan ke file, diperlukan.

Menulis ulang tanpa basis:

menulis ulang tidak berfungsi

Menulis ulang dengan basis:

menulis ulang bekerja

Di sini bagian dari .htaccessfile saya dari pub/static(penulisan ulang):

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

Cara menonaktifkan pembuatan file statis:

Jika Anda tidak ingin menggunakan versi file statis, Anda dapat menonaktifkan fitur ini di area admin Magento:

konfigurasi

Dimungkinkan untuk mengubah pengaturan ini untuk lingkup default menggunakan permintaan MySQL berikut :

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

Kemudian jalankan perintah berikutnya untuk menghapus cache konfigurasi:

bin/magento cache:clean config

PS: Jawaban saya sebenarnya untuk pengguna apache2. Jika Anda menggunakan NGINX lihat jawaban ini (oleh @ kevin-javitz)

Siarhey Uchukhlebau
sumber
jika dev/static/signada maka masukkan. INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
Dhaduk Mitesh
Pada sistem apache2, Anda perlu mengaktifkan mod_rewrite dengan: - sudo a2enmod rewrite.
Dallas Clarke
8

Jika Anda menjalankan Nginx, berikut adalah perbaikannya. Anda mungkin memiliki file conf Anda sendiri, Anda perlu memperbarui bagian / static / dengan ini, mereka telah memperbarui bagian itu secara khusus: # Hapus tanda tangan dari file statis yang digunakan untuk mengatasi bagian cache 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";
}
Kevin Chavez
sumber
Catatan tambahan, jika Anda menggunakan apache pastikan Anda memilikinya di pub / static / .htaccess baris 16:RewriteRule ^version.+?/(.+)$ $1 [L]
Kevin Chavez
Terima kasih atas balasan Anda, itu menunjuk saya ke solusi yang tepat dari masalah ini. Saya menggunakan Apache dan solusinya berbeda, tetapi saya tetap berterima kasih kepada Anda.
Siarhey Uchukhlebau
Anda hidup lebih aman! Saya membenturkan kepala Anda ke dinding! Dapat mengonfirmasinya berfungsi untuk nginx Magento 2.1.3
Cudos
6

Pergi ke database dan masukkan baris dalam tabel core_config_data:

INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0');
Saphal Jha
sumber
Hebat !! Terima kasih.
100r
4

Seharusnya tidak ada version*folder di staticfolder.
Ini kemungkinan besar terjadi karena Anda tidak mengaktifkan mod_rewrite dalam instance Anda.
Jalanpub/static/version1234/some/asset.js harus ditulis ulang pub/static/some/asset.js. Versi versi ada hanya untuk kedaluwarsa cache browser.

Marius
sumber
Saya periksa mod_rewrite dan diaktifkan: [root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OKdi .htaacess juga diaktifkan
Siarhey Uchukhlebau
pastikan itu FollowSymLinksdiizinkan. Ini terjadi pada saya setelah menginstal versi terbaru dari github dan saya punya masalah dengan mod_rewrite dan dengan FollowSymLinks.
Marius
Di bagian penulisan ulang FollowSymLinksdiatur sebagai Options +FollowSymLinksdan tidak ada masalah dengan konfigurasi yang sama sebelum up-dating :(
Siarhey Uchukhlebau
4

Sepertinya rilis 2.1.3 mengasumsikan nilai default untuk Stores => Configuration => Developer => Static Files Settings => Sign Static Filesdiatur ke Ya.

Jadi alih-alih mengubah penulisan ulang, dimungkinkan untuk mengatur fitur ini ke Tidak.

Jika tidak mungkin melakukan ini dari admin, karena admin gagal memuat aset frontend, ubah / tambahkan pengaturan ini dalam core_config_datatabel:

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

Masalah ini juga dicatat di Github: https://github.com/magento/magento2/issues/7869

nbjohan
sumber
2

Jika Anda menggunakan apache. Anda tidak boleh menghapus .htaccess dari pub / static. Anda bisa mendapatkan penggantinya di sini.

Eamonn
sumber
Terima kasih. Saya sudah mengganti file itu, tetapi masalah salah RewriteBase.
Siarhey Uchukhlebau