コンテンツのステージングに関する問題が原因で、すべてのページでエラー 404 が発生する
この記事では、Adobe Commerce オンプレミスおよびAdobe Commerce on cloud infrastructure の問題を修正します。これらの問題が発生した場合、ストアフロントページまたは Commerce Admin ージへのアクセス時に 404 エラーが発生します。
影響を受ける製品とバージョン
- Adobe Commerce オンプレミス 2.2.x、2.3.x
- クラウドインフラストラクチャー上のAdobe Commerce 2.2.x、2.3.x
問題
ストアフロントページまたは管理者にアクセスすると、 コンテンツのステージングを使用してストアコンテンツアセットのスケジュールされた更新で操作を実行した後、404 エラー(「Whoops, our bad…」ページ)が発生します(Module_Staging Magento を使用してスケジュールされたストアコンテンツアセットの更新)。 例えば、スケジュールされた更新を含む製品を削除した場合や、スケジュールされた更新の終了日を削除した場合などです。
ストアのコンテンツアセットには、次のものが含まれます。
- 製品
- カテゴリ
- カタログ価格ルール
- 買い物かご価格ルール
- CMSページ
- CMSブロック
- ウィジェット
一部のシナリオについては、以下の原因の節で説明します。
原因:
データベース (DB)の flag
テーブルに、staging_update
テーブルへの無効なリンクが含まれています。
問題はコンテンツのステージングに関連しています。 次に、2 つの具体的な状況を示します。この問題をトリガーとする状況が他にもある可能性があることに注意してください。
シナリオ 1: 次のようなストアコンテンツアセットを削除します。
- コンテンツのステージングで更新がスケジュールされています
- 更新には終了日(更新されたアセットが以前のバージョンに戻る有効期限)があります
- 更新の終了日が過去の日付です
同時に、削除されたアセットにスケジュールされた更新の終了日がない場合、問題が発生しない可能性があります。
シナリオ 2: スケジュールされた更新の終了日時の削除。
イシューが関連しているかどうかを特定する
発生している問題がこの記事で説明した問題であるかどうかを識別するには、次の DB クエリを実行します。
SELECT f.flag_data >'$.current_version' as flag_version, (su.id IS NOT NULL) as update_exists
-> FROM flag f
-> LEFT JOIN staging_update su
-> ON su.id = f.flag_data >'$.current_version'
-> WHERE flag_code = 'staging';
クエリが値「0」のテーブル update_exists
返す場合、staging_update
のテーブルへの無効なリンクがデータベースに存在し、 解決策で説明している手順が問題の解決に役立ちます。 次に、値が「0」に等しいクエリ結果 update_exists
例を示します。
クエリが、値が「1」 update_exists
あるテーブルまたは空の結果を返す場合は、イシューがステージングの更新に関連していないことを意味します。 次に、値が「1」に等しいクエリ結果 update_exists
例を示します。
この場合、トラブルシューティングのアイデアについては、 サイトのダウンのトラブルシューティングを参照してください。
解決策
-
次のクエリを実行して、
staging_update
テーブルへの無効なリンクを削除します。code language-sql DELETE FROM flag WHERE flag_code = 'staging';
-
cron ジョブが実行されるまで(適切に設定されている場合は最大 5 分以内に実行されます)待つか、設定されていない場合は手動で実行 cron ます。
無効なリンクを修正した後、問題を直ちに解決する必要があります。 問題が解決しない場合は、 サポートチケットを送信してください。
関連資料
Commerce実装プレイブックの データベーステーブルを変更する際のベストプラクティス