नवीनीकरण के बाद स्थैतिक सामग्री लोड नहीं हो रही है


25

Magento 2.1.0 से Magento 2.1.3 में अपग्रेड करने के बाद (संगीतकार का उपयोग करके) स्थिर सामग्री अब लोड नहीं हो रही है। ब्राउज़र कंसोल में मैं देख सकता हूं कि सभी फाइलें अनुपलब्ध हैं (404):

फ़ाइलें अनुपलब्ध पूर्वावलोकन

मैं नाम के साथ निर्देशिका नहीं दिख रहा है version*में pubनिर्देशिका।

मैंने पहले से ही क्या बनाया है, लेकिन इससे कोई फायदा नहीं हुआ:

  1. सभी अनुमतियाँ सेट करें 777, लेकिन सफलता के बिना।
  2. साफ किया गया कैश
  3. निकाला गया pub/static/*
  4. कुछ बार स्थिर सामग्री को पुन: प्राप्त किया
  5. आधिकारिक रिपॉजिटरी से फाइल के साथ .htaccessफाइल ( pub/staticडायरेक्टरी में) को बदल दिया ।

एक अन्य जानकारी:

  • mod_rewrite सक्षम किया गया है
  • FollowSymLinksअनुमति है (डिफ़ॉल्ट होस्ट कॉन्फ़िगरेशन और स्थानीय में .htaccess)
  • इस विन्यास ने 2.1.3 को अद्यतन करने से पहले Magento 2.1.0 के साथ ठीक काम किया
  • pub/static लेखन योग्य है

कोई सुझाव?


क्या आपने स्थिर सामग्री को फिर से तैयार किया?
Eamonn

हां, मैंने इसे कई बार सफलता के बिना किया
सियारि उचुकलेबौ

मैं एक ही मुद्दा रहा हूँ, upvoted। मेरे मामले में मैं Nginx और उसी conf फ़ाइलों का उपयोग कर रहा हूँ। संगीतकार का उपयोग करके अद्यतन किया गया था, और @SiarheyUchukhlebau के समान ही कदम उठाए
केविन शावेज

बाप रे। अचानक एक ही समस्या हो गई, लेकिन अपाचे का उपयोग करना। क्लियरिंग पब / स्टैटिक ने इसे बंद कर दिया और मैं इसे ठीक नहीं कर सकता।
एमानो

नीचे एक समाधान मिल सकता है।
Eamonn

जवाबों:


28

मुख्य मुद्दा गलत पुनर्लेखन कार्य के कारण हुआ था (जैसा @ मारी ने बताया था)। RewriteBase मेरी निर्देशिका में कोई भी नहीं था pub/static/और अपाचे फाइलों को नहीं खोज सका क्योंकि रूट फ़ोल्डर से उनके लिए खोज की गई थी। हमारे द्वारा जोड़े जाने के बाद: RewriteBase /pub/staticसब कुछ काम करना शुरू कर देता है।

यह कैसे काम किया:

इस पते से:

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

फिर से लिखना चाहिए:

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

रूट फ़ोल्डर से लाइन शुरू हुई:

/pub/static/version...

यह काम नहीं किया है और फ़ाइल को पुनर्निर्देशित नहीं कर सकता है, की जरूरत है।

आधार के बिना फिर से लिखना:

फिर से लिखना काम नहीं करता है

आधार के साथ फिर से लिखें:

फिर से लिखना

यहाँ से मेरी .htaccessफ़ाइल का एक हिस्सा pub/static(फिर से लिखना):

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

स्टैटिक-फाइल्स वर्जनिंग को कैसे निष्क्रिय करें:

यदि आप स्थिर फ़ाइलों का उपयोग नहीं करना चाहते हैं, तो आप इस सुविधा को Magento के व्यवस्थापक क्षेत्र में अक्षम कर सकते हैं:

config

निम्नलिखित MySQL क्वेरी का उपयोग करके डिफ़ॉल्ट स्कोप के लिए इस सेटिंग को बदलना संभव है :

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

फिर कॉन्फ़िगरेशन कैश साफ़ करने के लिए अगली कमांड निष्पादित करें:

bin/magento cache:clean config

PS: मेरा जवाब apache2 उपयोगकर्ताओं के लिए वास्तविक है। यदि आप NGINX का उपयोग कर रहे हैं, तो यह उत्तर देखें (@ kevin-javitz द्वारा)


यदि dev/static/signमौजूद है तो उसे डालें। INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
धड़ुक मितेश

Apache2 सिस्टम पर, आपको mod_rewrite को इसके साथ सक्षम करना होगा: - sudo a2enmod rewrite
डलास क्लार्क

8

यदि आप Nginx चला रहे हैं, तो यहाँ ठीक है। आपके पास शायद अपनी स्वयं की गोपनीय फाइल है, आपको / स्टैटिक / पार्ट को अपडेट करने की आवश्यकता है, उन्होंने विशेष रूप से इसका हिस्सा अपडेट किया है: # उन स्टैटिक फाइलों के हस्ताक्षर हटाएं जो ब्राउज़र कैश सेक्शन को पार करने के लिए उपयोग की जाती हैं:

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

अतिरिक्त नोट, यदि आप अपाचे का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपके पास यह आपके पब / स्टेटिक / .htaccess लाइन में 16 है:RewriteRule ^version.+?/(.+)$ $1 [L]
केविन शावेज़

आपके उत्तर के लिए धन्यवाद, इसने मुझे समस्या के सही समाधान की ओर इशारा किया। मैं अपाचे का उपयोग करता हूं और समाधान अलग है, लेकिन मैं वैसे भी आपका आभारी हूं।
सियारि उचुकलेबौ

आप एक जीवन सुरक्षित हैं! मैं दीवार के खिलाफ म्यू सिर पीट रहा था! इसकी पुष्टि कर सकते हैं मेरे nginx Magento 2.1.3 के लिए काम
Cudos

6

डेटाबेस पर जाएं और core_config_data तालिका में एक पंक्ति डालें:

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

बहुत बढ़िया!! धन्यवाद।
l00k

4

version*फ़ोल्डर में कोई फ़ोल्डर नहीं होना चाहिए static
यह संभवतः इसलिए होता है क्योंकि आपके पास mod_rewrite आपके उदाहरण में सक्षम नहीं है।
रास्ता pub/static/version1234/some/asset.jsफिर से लिखना चाहिए pub/static/some/asset.js। संस्करण की बात केवल ब्राउज़र कैश समाप्ति के लिए है।


मैं जाँच करता हूँ mod_rewrite और यह सक्षम है: [root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OKइनहेसटेस को भी सक्षम किया गया है
सिरैय उचुकलेबौ १५'१६ को

सुनिश्चित करें कि FollowSymLinksअनुमति है। यह मेरे लिए नवीनतम संस्करण को स्थापित करने के बाद हुआ था और मुझे mod_rewrite के साथ और FollowSlinks के साथ एक समस्या थी।
मेरियस

पुनर्लेखन अनुभाग FollowSymLinksके रूप में सेट किया गया है Options +FollowSymLinksऔर इससे पहले कि ऊपर से डेटिंग :( एक ही विन्यास के साथ कोई समस्या नहीं थी
Siarhey Uchukhlebau

4

ऐसा लगता है कि 2.1.3 रिलीज़ मान लेता है कि डिफ़ॉल्ट मान Stores => Configuration => Developer => Static Files Settings => Sign Static Filesहां पर सेट है।

इसलिए पुनर्लेखन को बदलने के बजाय, इस सुविधा को सं। पर सेट करना संभव है।

यदि यह व्यवस्थापक से ऐसा करना संभव नहीं है, क्योंकि व्यवस्थापक सीमांत संपत्तियों को लोड करने, core_config_dataतालिका में इस सेटिंग को बदलने / जोड़ने में विफल रहता है :

स्कोप: डिफ़ॉल्ट
स्कोप_आईडी: 0
पथ: देव / स्टैटिक / साइन
वैल्यू: 0

इस मुद्दे को गितुब: https://github.com/magento/magento2/issues/7869 पर भी नोट किया गया है


2

यदि आप अपाचे का उपयोग कर रहे हैं। आपको पब / स्टेटिक से .htaccess को नहीं हटाना चाहिए। आप यहां एक प्रतिस्थापन प्राप्त कर सकते हैं।


धन्यवाद। मैंने पहले ही उस फ़ाइल को बदल दिया है, लेकिन समस्या गलत थी RewriteBase
सियारि उचुकलेबौ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.