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.