由於內容暫存問題,所有頁面均出現錯誤404
本文針對Adobe Commerce內部部署和Adobe Commerce雲端基礎結構問題提供修正,當存取任何店面頁面或Commerce Admin時,您會收到404錯誤。
受影響的產品和版本
- Adobe Commerce內部部署2.2.x、2.3.x
- 雲端基礎結構上的Adobe Commerce 2.2.x、2.3.x
問題
存取任何店面頁面或管理員使用內容暫存 (使用Magento_暫存模組排程的存放區內容資產更新)執行具有已排程更新的作業後,會發生404錯誤(「糟糕,我們的錯誤……」頁面)。 例如,您可能會刪除有排程更新的產品,或移除排程更新的結束日期。
存放區內容資產包括:
- 產品
- 類別
- 目錄價格規則
- 購物車價格規則
- CMS頁面
- CMS區塊
- Widget
部分情況將在下面的「原因」一節中討論。
原因
資料庫(DB)中的flag
資料表包含指向staging_update
資料表的無效連結。
此問題與內容測試有關。 以下是兩種特定情況;請注意,可能有更多情況會觸發此問題。
案例1: 正在刪除商店內容資產,該資產:
- 已排程內容暫存的更新
- 更新有結束日期(即更新的資產恢復為先前版本的到期日)
- 更新的結束日期是過去的日期
同時,如果刪除的資產沒有排程更新的結束日期,則可能不會發生問題。
案例2: 正在移除排程更新的結束日期/時間。
識別您的問題是否相關
若要識別您遇到的問題是否為本文所述的問題,請執行以下資料庫查詢:
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';
如果查詢傳回update_exists
值為「0」的資料表,則資料庫中存在staging_update
資料表的無效連結,且解決方案區段中說明的步驟將有助於解決此問題。 以下是查詢結果的範例,其update_exists
值等於「0」:
如果查詢傳回update_exists
值為「1」的資料表或空白結果,則表示您的問題與中繼更新無關。 以下是查詢結果的範例,其update_exists
值等於「1」:
在此情況下,您可以參閱Site Down Troubleshooter以取得疑難排解想法。
解決方案
-
執行下列查詢以刪除
staging_update
資料表的無效連結:code language-sql DELETE FROM flag WHERE flag_code = 'staging';
-
請等待cron工作執行(若設定正確,最多五分鐘後執行),或若您未設定cron,請手動執行。
在修正無效連結後,應立即解決問題。 如果問題仍然存在,請提交支援票證。