ปัญหาหลักเกิดจากการเขียนงานที่ไม่ถูกต้องใหม่ (ตามที่ @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)