アップグレード後に静的コンテンツがロードされない


24

Magento 2.1.0からMagento 2.1.3(コンポーザーを使用)にアップグレードした後、静的コンテンツがロードされなくなりました。ブラウザコンソールで、すべてのファイルが使用できないことを確認できます(404):

使用できないファイルのプレビュー

私は名前のディレクトリが表示されないversion*pubディレクトリ。

私がすでに作ったものの、助けにはならなかった:

  1. すべての権限を777に設定しますが、成功しません。
  2. 消去されたキャッシュ
  3. 削除しました pub/static/*
  4. 静的コンテンツを数回再生成しました
  5. .htaccesspub/staticディレクトリ内の)ファイルを公式リポジトリのファイルに置き換えました。

別の情報:

  • mod_rewrite 有効になっています
  • FollowSymLinks許可されます(デフォルトのホスト構成およびローカルで.htaccess
  • この構成は、2.1.3に更新する前のMagento 2.1.0で正常に機能しました。
  • pub/static 書き込み可能です

助言がありますか?


静的コンテンツを再展開しましたか?
Eamonn

はい、成功せずに何度も
やり

私は同じ問題を抱えています。私の場合、Nginxと同じconfファイルを使用しています。更新は作曲家を使用して行われ、@ SiarheyUchukhlebauと同じ手順を実行しました
ケビンチャベス

まあ。突然同じ問題が発生しましたが、Apacheを使用していました。pub / staticをクリアすると、それがオフになり、修正できないようです。
イーモン

以下の解決策を見つけた可能性があります。
イーモン

回答:


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管理エリアでこの機能を無効にできます。

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を使用している場合は、この回答を参照してください(by @ 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を実行している場合、ここに修正があります。おそらく独自の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";
}

:追加のノートは、あなたがapacheのメイクを使用している場合は、必ずあなたのパブ/静的/ .htaccessのライン16でこれを持っているRewriteRule ^version.+?/(.+)$ $1 [L]
ケビン・チャベス

返信いただきありがとうございます。問題の正しい解決策を示してくれました。私は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なっています
。.htaac​​essでも

それFollowSymLinksが許可されていることを確認してください。これはgithubから最新バージョンをインストールした後に起こり、mod_rewriteとFollowSymLinksに問題がありました。
マリウス

書き換えセクションFollowSymLinksでとして設定されてOptions +FollowSymLinksおり、
更新

4

2.1.3リリースでは、デフォルト値Stores => Configuration => Developer => Static Files Settings => Sign Static FilesがYesに設定されていると想定しているようです 。

したがって、書き換えを変更する代わりに、この機能を[いいえ]に設定できます。

管理者がフロントエンドアセットの読み込みに失敗したために管理者からこれを実行できない場合は、core_config_data表のこの設定を変更/追加します。

スコープ:デフォルト
scope_id:0
パス:dev / static / sign
値:0

この問題はGithubにも記載されていますhttps : //github.com/magento/magento2/issues/7869


2

Apacheを使用している場合。pub / staticから.htaccessを削除しないでください。こちらで交換品を入手できます。


ありがとうございました。私はすでにそのファイルを置き換えましたが、問題は不正確RewriteBaseでした。
Siarhey Uchukhlebau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.