Nội dung tĩnh không tải sau khi nâng cấp


24

Sau khi nâng cấp từ Magento 2.1.0 lên Magento 2.1.3 (sử dụng trình soạn thảo), nội dung tĩnh sẽ không tải nữa. Trong bảng điều khiển trình duyệt, tôi có thể thấy rằng tất cả các tệp không có sẵn (404):

xem trước tập tin

Tôi không thấy các thư mục có tên version*trong pubthư mục.

Những gì tôi đã làm nhưng nó không giúp được gì:

  1. đặt tất cả các quyền thành 777, nhưng không thành công.
  2. làm sạch bộ nhớ cache
  3. di chuyển pub/static/*
  4. tái tạo nội dung tĩnh vài lần
  5. thay thế .htaccesstệp (trong pub/staticthư mục) bằng tệp từ kho lưu trữ chính thức.

Một thông tin khác:

  • mod_rewrite được kích hoạt
  • FollowSymLinksđược cho phép (trong cấu hình máy chủ mặc định và cục bộ .htaccess)
  • Cấu hình này hoạt động tốt với Magento 2.1.0 trước khi cập nhật lên 2.1.3
  • pub/static có thể ghi

Bất kỳ đề xuất?


Bạn đã triển khai lại nội dung tĩnh?
Eamonn

Vâng, tôi đã làm điều đó nhiều lần mà không thành công
Siarhey Uchukhlebau

Tôi có cùng một vấn đề, nâng cao. Trong trường hợp của tôi, tôi đang sử dụng Nginx và các tệp conf tương tự. Việc cập nhật được thực hiện bằng cách sử dụng trình soạn nhạc và thực hiện các bước tương tự như @SiarheyUchukhlebau đã làm
Kevin Chavez

Trời ơi. Đột nhiên gặp vấn đề tương tự, nhưng sử dụng Apache. Xóa pub / static đặt nó ra và tôi dường như không thể sửa nó.
Eamonn

Có thể đã tìm thấy một giải pháp dưới đây.
Eamonn

Câu trả lời:


28

Vấn đề chính là do công việc viết lại không chính xác (như @Marius đã nói). Không có RewriteBase trong thư mục của tôi pub/static/và Apache không thể tìm thấy các tệp vì đã tìm kiếm chúng từ thư mục gốc. Sau khi chúng tôi thêm: RewriteBase /pub/staticmọi thứ bắt đầu hoạt động.

Làm thế nào nó hoạt động:

theo địa chỉ này:

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

việc viết lại sẽ hoạt động:

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

khi dòng bắt đầu từ thư mục gốc:

/pub/static/version...

nó không hoạt động và không thể chuyển hướng đến tập tin.

Viết lại mà không có cơ sở:

viết lại không hoạt động

Viết lại với cơ sở:

viết lại tác phẩm

Đây là một phần của .htaccesstập tin của tôi từ pub/static(viết lại):

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

Cách tắt phiên bản tệp tĩnh:

Nếu bạn không muốn sử dụng phiên bản tệp tĩnh, bạn có thể tắt tính năng này trong khu vực quản trị Magento:

cấu hình

Có thể thay đổi cài đặt này cho phạm vi mặc định bằng truy vấn MySQL sau :

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

Sau đó thực hiện lệnh tiếp theo để xóa bộ đệm cấu hình:

bin/magento cache:clean config

PS: Câu trả lời của tôi là thực tế cho người dùng apache2. Nếu bạn đang sử dụng NGINX, hãy xem câu trả lời này (bởi @ kevin-javitz)


nếu dev/static/signtồn tại thì chèn nó. INSERT INTO core_config_data (scope, scope_id, path, value) VALUES ('default', 0, 'dev/static/sign', '0')
Dhaduk Mitesh

Trên các hệ thống apache2, bạn cần kích hoạt mod_rewrite với: - sudo a2enmod rewrite.
Dallas Clarke

8

Nếu bạn đang chạy Nginx, đây là cách khắc phục. Bạn có thể có tệp conf riêng của mình, bạn cần cập nhật / static / part với phần này, họ đã cập nhật một phần cụ thể: # Xóa chữ ký của các tệp tĩnh được sử dụng để khắc phục phần bộ đệm của trình duyệt:

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

Lưu ý thêm, nếu bạn đang sử dụng apache, hãy đảm bảo bạn có thứ này trong dòng pub / static / .htaccess của bạn 16:RewriteRule ^version.+?/(.+)$ $1 [L]
Kevin Chavez

Cảm ơn bạn đã trả lời của bạn, nó chỉ cho tôi giải pháp chính xác của vấn đề. Tôi sử dụng Apache và giải pháp thì khác, nhưng dù sao tôi cũng biết ơn bạn.
Siarhey Uchukhlebau

Bạn là một cuộc sống an toàn hơn! Tôi đang đập đầu vào tường! Có thể xác nhận nó hoạt động cho nginx Magento 2.1.3 của tôi
Cudos

6

Đi đến cơ sở dữ liệu và chèn một hàng trong bảng core_config_data:

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

Tuyệt vời!! Cảm ơn bạn.
l00k

4

Không nên có một version*thư mục trong staticthư mục.
Điều này rất có thể xảy ra vì bạn không bật mod_rewrite trong trường hợp của bạn.
Đường dẫn pub/static/version1234/some/asset.jsnên được viết lại pub/static/some/asset.js. Điều phiên bản là chỉ dành cho hết hạn bộ nhớ cache của trình duyệt.


Tôi kiểm tra mod_rewrite và nó được kích hoạt: [root@web www]# httpd -M | grep "rewrite" rewrite_module (shared) Syntax OKtrong .htaacess nó cũng được bật
Siarhey Uchukhlebau

hãy chắc chắn rằng nó FollowSymLinksđược cho phép Điều này đã xảy ra với tôi sau khi cài đặt phiên bản mới nhất từ ​​github và tôi gặp vấn đề với mod_rewrite và với FollowSymLinks.
Marius

Trong phần viết lại FollowSymLinksđược đặt là Options +FollowSymLinksvà không có vấn đề gì với cùng cấu hình trước khi hẹn hò :(
Siarhey Uchukhlebau

4

Có vẻ như bản phát hành 2.1.3 giả định giá trị mặc định Stores => Configuration => Developer => Static Files Settings => Sign Static Filesđược đặt thành Có.

Vì vậy, thay vì thay đổi cách viết lại, có thể đặt tính năng này thành Không.

Nếu không thể thực hiện việc này từ quản trị viên, vì quản trị viên không tải được tài sản ngoại vi, hãy thay đổi / thêm cài đặt này trong core_config_databảng:

scope: default
scope_id: 0
path: dev / static / dấu
giá trị: 0

Vấn đề này cũng được ghi nhận trên Github: https://github.com/magento/magento2/issues/7869


2

Nếu bạn đang sử dụng apache. Bạn không được xóa .htaccess khỏi pub / static. Bạn có thể nhận được một sự thay thế ở đây.


Cảm ơn bạn. Tôi đã thay thế tập tin đó, nhưng vấn đề là không chính xác RewriteBase.
Siarhey Uchukhlebau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.