Statik İçerik yükseltme sonrasında yüklenmiyor


25

Magento 2.1.0'dan Magento 2.1.3'e (besteci kullanarak) yükselttikten sonra statik içerik artık yüklenmiyor. Tarayıcı konsolunda tüm dosyaların kullanılamadığını görebiliyorum (404):

kullanılamayan dosyalar önizleme

Dizinde adı version*olan pubdizinleri göremiyorum .

Ne yaptım ama yardım etmedi:

  1. Tüm izinleri 777başarı ile tamamlama.
  2. önbellek temizlendi
  3. kaldırıldı pub/static/*
  4. birkaç kez yenilenmiş statik içerik
  5. yerini .htaccess(dosyayı pub/staticresmi deposundan dosyası ile dizine).

Başka bir bilgi:

  • mod_rewrite etkin
  • FollowSymLinksizin verilir (varsayılan ana bilgisayar yapılandırmasında ve yerel .htaccess)
  • Bu yapılandırma 2.1.3 güncellemesinden önce Magento 2.1.0 ile uyumlu çalıştı.
  • pub/static yazılabilir

Baska öneri?


Statik içeriği yeniden dağıttınız mı?
— Eamonn

Evet, başarı ile defalarca yaptım
— Siarhey Uchukhlebau

Aynı sorunu yaşıyorum, oy verildi. Benim durumumda Nginx ve aynı conf dosyalarını kullanıyorum. Güncelleme besteci kullanılarak yapıldı ve @SiarheyUchukhlebau'nun yaptığı gibi aynı adımları uyguladı
— Kevin Chavez

Ah hayatım. Aniden aynı sorunu var, ancak Apache kullanıyor. Pub / static'ı silmek onu kapattı ve düzeltemiyorum.
— Eamonn

Aşağıda bir çözüm bulmuş olabilirsiniz.
— Eamonn

Yanıtlar:


28

Asıl sorun yanlış yeniden yazma çalışmasından kaynaklanıyordu (@Marius'un söylediği gibi). Hiçbir oldu RewriteBase benim dizinde pub/static/ve kök klasörden onlara aradığınız için Apache dosyalarını bulamadık. Biz ekledikten sonra: RewriteBase /pub/staticHer şey çalışmaya başlar.

Nasıl çalıştı:

bu adrese göre:

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

yeniden yazma çalışması gerekir:

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

çizgi kök klasörden başladığında:

/pub/static/version...

işe yaramadı ve gerekli dosyaya yönlendirilemedi.

Bazsız yeniden yaz:

yeniden yazma çalışmıyor

Tabanla yeniden yazma:

yeniden yazma çalışmaları

Benim bir kısmını Buraya .htaccessgelen dosyada pub/static(yeniden yazar):

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

Statik dosyalar sürümünün nasıl devre dışı bırakılacağı:

Statik dosya sürümlerini kullanmak istemiyorsanız, bu özelliği Magento yönetici alanında devre dışı bırakabilirsiniz:

yapılandırma

Bu ayarı varsayılan kapsam için aşağıdaki MySQL sorgusunu kullanarak değiştirmek mümkündür :

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

Ardından bir yapılandırma önbelleğini temizlemek için bir sonraki komutu yürütün:

bin/magento cache:clean config

Not: Cevabım apache2 kullanıcıları için gerçek. Eğer kullanıyorsanız nginx bkz bu cevabı (@ kevin-javitz yoluyla)


eğer dev/static/signvarsa, o zaman takın. INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
— Dhaduk Mitesh

Apache2 sistemlerinde mod_rewrite işlevini aşağıdakilerle etkinleştirmeniz gerekir: - sudo a2enmod rewrite.
— Dallas Clarke

8

Nginx kullanıyorsanız, işte düzeltme. Muhtemelen kendi konf dosyanız var, bununla birlikte / static / kısmını güncellemeniz gerekiyor, onun bir kısmını özellikle güncellediler: # Tarayıcı önbellek bölümünü aşmak için kullanılan statik dosyaların imzasını kaldırın:

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

Ek not, apache kullanıyorsanız, bunu pub / static / .htaccess satırınızdaki 16:RewriteRule ^version.+?/(.+)$ $1 [L]
— Kevin Chavez

Cevabınız için teşekkür ederim, konunun doğru çözümü için beni işaret etti. Apache kullanıyorum ve çözüm farklı, ama yine de sana minnettarım.
— Siarhey Uchukhlebau

Sen daha güvenli bir hayatsın! Duvara kafa çarpıyordu! Benim nginx Magento 2.1.3 için çalıştığını doğrulayabilir miyim
— Cudos

6

Veritabanına git ve core_config_data tablosuna bir satır ekle:

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

Korku veren !! Teşekkür ederim.
— Ekim’de

4

version*Klasörde bir klasör olmamalıdır static.
Bu büyük olasılıkla, örneğinizde etkin mod_rewrite özellikli olmadığı için gerçekleşir.
Yolun üzerine pub/static/version1234/some/asset.jsyeniden yazılmalıdır pub/static/some/asset.js. Sürüm, yalnızca tarayıcı önbelleğinin sona ermesi için var.


Kontrol ediyorum mod_rewrite ve etkin: [root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OK.htaacess'de de etkin
— Siarhey Uchukhlebau 15:16

FollowSymLinksizin verildiğinden emin ol . Bu en son github sürümünü yükledikten sonra başıma geldi ve mod_rewrite ve FollowSymLinks ile bir sorunum vardı.
— Marius

FollowSymLinksOptions +FollowSymLinks
— Yeniden

4

2.1.3 sürümünün varsayılan değerinin Stores => Configuration => Developer => Static Files Settings => Sign Static FilesEvet olarak ayarlandığını varsayar gibi görünüyor .

Böylece, yeniden yazmak yerine, bu özelliği Hayır olarak ayarlamak mümkündür.

Yönetici tarafından bunu yapmak mümkün değilse, yönetici ön varlıklarını yükleyemediğinden, bu ayarı core_config_datatabloya değiştirin / ekleyin :

kapsam: varsayılan
kapsam_D: 0
yol: dev / statik / işareti
değeri: 0

Bu sorun Github'da da belirtilmiştir: https://github.com/magento/magento2/issues/7869


2

Apache kullanıyorsanız. .Htaccess dosyasını pub / static içinden silmemelisiniz. Burada bir yedek alabilirsiniz .


Teşekkür ederim. Bu dosyayı zaten değiştirdim, ancak sorun yanlış RewriteBase.
— Siarhey Uchukhlebau
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.