เนื้อหาแบบคงที่ไม่ได้โหลดหลังจากการอัพเกรด


24

หลังจากอัปเกรดจาก 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)
  • การกำหนดค่านี้ทำงานได้ดีกับ Magento 2.1.0 ก่อนที่จะอัปเดตเป็น 2.1.3
  • pub/static เขียนได้

ข้อเสนอแนะใด ๆ


คุณปรับใช้เนื้อหาสแตติกใหม่หรือไม่
Eamonn

ใช่ฉันทำหลายครั้งโดยไม่ประสบความสำเร็จ
Siarhey Uchukhlebau

ฉันมีปัญหาเดียวกัน upvoted ในกรณีของฉันฉันใช้ Nginx และไฟล์ conf เดียวกัน การอัปเดตเสร็จสิ้นโดยใช้ผู้แต่งและทำตามขั้นตอนเดียวกับ @SiarheyUchukhlebau
Kevin Chavez

โอ้ที่รัก ทันใดนั้นก็มีปัญหาเดียวกัน แต่ใช้ Apache การล้าง pub / static ตั้งค่าไว้และฉันไม่สามารถแก้ไขได้
Eamonn

อาจพบวิธีแก้ไขด้านล่าง
Eamonn

คำตอบ:


28

ปัญหาหลักเกิดจากการเขียนงานที่ไม่ถูกต้องใหม่ (ตามที่ @Marius บอก) ไม่มีRewriteBase อยู่ในไดเรกทอรีของฉัน pub/static/และ Apache ไม่สามารถค้นหาไฟล์ได้เพราะค้นหาจากโฟลเดอร์ราก หลังจากที่เราได้เพิ่ม: 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:

การตั้งค่า

เป็นไปได้ที่จะเปลี่ยนการตั้งค่านี้สำหรับขอบเขตเริ่มต้นโดยใช้แบบสอบถาม 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')
Dhaduk Mitesh

ในระบบ apache2 คุณต้องเปิดใช้ mod_rewrite sudo a2enmod rewriteด้วย:
Dallas Clarke

8

หากคุณใช้ Nginx นี่คือการแก้ไข คุณอาจมีไฟล์ conf ของคุณเองคุณต้องอัปเดต / static / part ด้วยสิ่งนี้พวกเขาได้อัปเดตส่วนของมันโดยเฉพาะ: # ลบลายเซ็นต์ของไฟล์คงที่ที่ใช้เพื่อเอาชนะส่วนแคชเบราว์เซอร์:

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

หมายเหตุเพิ่มเติมหากคุณใช้ apache ตรวจสอบให้แน่ใจว่าคุณมีสิ่งนี้ใน pub / static / .htaccess บรรทัดที่ 16:RewriteRule ^version.+?/(.+)$ $1 [L]
Kevin Chavez

ขอบคุณสำหรับคำตอบของคุณมันชี้ให้ฉันเห็นวิธีแก้ไขปัญหาที่ถูกต้อง ฉันใช้ Apache และวิธีแก้ปัญหานั้นแตกต่างกัน แต่ฉันก็รู้สึกขอบคุณคุณอยู่ดี
Siarhey Uchukhlebau

คุณคือชีวิตที่ปลอดภัยยิ่งขึ้น! ฉันต่อสู้หัวมูกับกำแพง! สามารถยืนยันได้ว่าทำงานได้กับ 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ใน. htaacess จะเปิดใช้งานด้วย
Siarhey Uchukhlebau

ตรวจสอบให้แน่ใจว่าFollowSymLinksได้รับอนุญาต สิ่งนี้เกิดขึ้นกับฉันหลังจากติดตั้งเวอร์ชันล่าสุดจาก github และฉันมีปัญหากับ mod_rewrite และ FollowSymLinks
Marius

ในการเขียนส่วนFollowSymLinksถูกกำหนดให้เป็นOptions +FollowSymLinksและมีปัญหาเกี่ยวกับการตั้งค่าเดียวกันก่อนที่จะขึ้นเดท :( ไม่มี
Siarhey Uchukhlebau

4

ดูเหมือนว่าการเปิดตัว 2.1.3 จะถือว่าค่าเริ่มต้นสำหรับ Stores => Configuration => Developer => Static Files Settings => Sign Static Filesตั้งเป็นใช่

ดังนั้นแทนที่จะเปลี่ยนการเขียนซ้ำเป็นไปได้ที่จะตั้งค่าคุณลักษณะนี้เป็นไม่

หากไม่สามารถทำได้จากผู้ดูแลระบบเนื่องจากผู้ดูแลระบบไม่สามารถโหลดเนื้อหาส่วนหน้าให้เปลี่ยน / เพิ่มการตั้งค่านี้ในcore_config_dataตาราง:

scope: default
scope_id: 0
path: ค่า dev / static / sign
: 0

ปัญหานี้ยังได้รับการบันทึกใน Github: https://github.com/magento/magento2/issues/7869


2

หากคุณใช้อะแพชี คุณต้องไม่ลบ. htaccess จาก pub / static คุณสามารถขอรับการเปลี่ยนได้ที่นี่


ขอขอบคุณ. ฉันได้เปลี่ยนไปแล้วไฟล์นั้น RewriteBaseแต่ปัญหาอยู่ในที่ไม่ถูกต้อง
Siarhey Uchukhlebau
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.