업그레이드 후 정적 컨텐츠가로드되지 않습니다


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)
  • 이 구성은 2.1.3으로 업데이트하기 전에 Magento 2.1.0에서 제대로 작동했습니다.
  • pub/static 쓰기 가능하다

어떤 제안?


정적 컨텐츠를 재배치 했습니까?
Eamonn

그렇습니다, 나는 성공하지 않고 여러 번
해냈

나는 같은 문제를 겪고 있습니다. 제 경우에는 Nginx와 동일한 conf 파일을 사용하고 있습니다. 업데이트는 작곡가를 사용하여 수행하고, @SiarheyUchukhlebau했던 것과 동일한 단계를했던 한
케빈 차베스에게

이런. 갑자기 같은 문제가 발생했지만 Apache를 사용했습니다. 술집 / 정적을 지우면 설정이 해제되어 해결할 수없는 것 같습니다.
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

추신 : 내 대답은 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 / 부분을 갱신 할 필요가 있고, 그것들의 부분을 구체적으로 갱신했습니다 : # 브라우저 캐시 섹션을 극복하기 위해 사용되는 정적 파일의 서명을 제거하십시오 :

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

추가 참고 사항, 아파치를 사용하는 경우 pub / static / .htaccess 라인 16에이 항목이 있는지 확인하십시오.RewriteRule ^version.+?/(.+)$ $1 [L]
Kevin Chavez

답장을 보내 주셔서 감사합니다. 문제의 올바른 해결책을 알려주었습니다. 나는 Apache를 사용하고 솔루션은 다르지만 어쨌든 당신에게 감사합니다.
Siarhey Uchukhlebau 11

당신은 더 안전한 삶입니다! 나는 벽에 뮤 머리를 두드리고 있었다! 내 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_id : 0
경로 : dev / static / sign
값 : 0

이 문제는 Github에서도 볼 수 있습니다 : https://github.com/magento/magento2/issues/7869


2

아파치를 사용하는 경우. pub / static에서 .htaccess를 삭제해서는 안됩니다. 여기서 교체를받을 수 있습니다 .


고맙습니다. 이미 해당 파일을 교체했지만 문제가 잘못되었습니다 RewriteBase.
Siarhey Uchukhlebau
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.