由於內容暫存問題,所有頁面均出現錯誤404

本文針對Adobe Commerce內部部署和Adobe Commerce雲端基礎結構問題提供修正,當存取任何店面頁面或 Commerce Admin 時,您會收到404錯誤。

說明 description

受影響的產品和版本

  • Adobe Commerce內部部署2.2.x、2.3.x
  • 雲端基礎結構上的Adobe Commerce 2.2.x、2.3.x

問題

注意:本文不適用於您嘗試預覽測試更新時發生404錯誤的情況。 如果您遇到此問題,請開啟支援票證

存取任何店面頁面或管理員使用Content Staging (使用Magento_Staging模組排程的存放區內容資產更新)執行作業後,會發生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」:

flag_vesion
update_exists
1560427321
0

1 row in set (0.00 sec)

如果查詢傳回update_exists值為「1」的資料表或空白結果,則表示您的問題與中繼更新無關。 以下是查詢結果的範例,其update_exists值等於「1」:

flag_vesion
update_exists
1560427321
1

1 row in set (0.00 sec)

在此情況下,您可以參閱Site Down Troubleshooter以取得疑難排解想法。

解決方法 resolution

  1. 執行下列查詢以刪除staging_update資料表的無效連結: DELETE FROM flag WHERE flag_code = 'staging';.
  2. 等待cron工作執行(若設定正確,最多五分鐘後執行),或若未設定cron,則手動執行。

在修正無效連結後,應立即解決問題。 如果問題仍然存在,請提交支援票證

相關閱讀

在Commerce實作行動手冊中修改資料庫資料表的最佳實務

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f