Fel 404 på alla sidor på grund av problem med Content Staging
I den här artikeln finns en korrigering för Adobe Commerce lokalt och Adobe Commerce om molninfrastrukturproblem, där du får ett 404-fel när du öppnar en butikssida eller Commerce Admin.
Berörda produkter och versioner
- Adobe Commerce lokal 2.2.x, 2.3.x
- Adobe Commerce om molninfrastruktur 2.2.x, 2.3.x
Problem
Om du får åtkomst till en butikssida eller Admin genereras felet 404 (sidan"Hoppsan, vår dåliga…") efter att du har utfört åtgärder med schemalagda uppdateringar för att lagra innehållsresurser med Content Staging (uppdateringar för att lagra innehållsresurser som schemalagts med modulen Magento_Staging). Du kan till exempel ha tagit bort en produkt med en schemalagd uppdatering eller tagit bort slutdatumet för den schemalagda uppdateringen.
En resurs för butiksinnehåll innehåller:
- Produkt
- Kategori
- Katalogprisregel
- Kundprisregel
- CMS Page
- CMS Block
- Widget
Vissa scenarier beskrivs i avsnittet Orsak nedan.
Orsak
Tabellen flag
i databasen (DB) innehåller ogiltiga länkar till tabellen staging_update
.
Problemet är relaterat till innehållsindelning. Nedan visas två olika scenarier. Observera att det kan finnas fler situationer som utlöser problemet.
Scenario 1: Tar bort en resurs för butiksinnehåll som:
- har en uppdatering schemalagd med Content Staging
- uppdateringen har ett slutdatum (vilket innebär det förfallodatum efter vilket den uppdaterade tillgången återgår till sin tidigare version)
- uppdateringens slutdatum har passerat
Samtidigt kan problemet bero på att en borttagen tillgång inte har något slutdatum för den schemalagda uppdateringen.
Scenario 2: Tar bort slutdatum/tid för en schemalagd uppdatering.
Identifiera om ditt problem är relaterat
Kör följande DB-fråga för att identifiera om problemet som du har drabbats av är det som beskrivs i den här artikeln:
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';
Om frågan returnerar en tabell där värdet update_exists
är 0, finns det en ogiltig länk till tabellen staging_update
i databasen, och de steg som beskrivs i avsnittet Lösning hjälper dig att lösa problemet. Följande är ett exempel på frågeresultatet med värdet update_exists
som är lika med "0":
Om frågan returnerar en tabell där värdet update_exists
är 1 eller ett tomt resultat betyder det att ditt problem inte är relaterat till mellanlagringsuppdateringar. Följande är ett exempel på frågeresultatet med värdet update_exists
som är lika med "1":
I det här fallet kan du läsa Felsökning för plats för felsökning av idéer.
Lösning
-
Kör följande fråga för att ta bort den ogiltiga länken till tabellen
staging_update
:code language-sql DELETE FROM flag WHERE flag_code = 'staging';
-
Vänta tills jobbet cron har körts (körs på upp till fem minuter om det har konfigurerats korrekt) eller kör det manuellt om du inte har konfigurerat cron.
Problemet bör lösas direkt efter att den ogiltiga länken har åtgärdats. Om problemet kvarstår skickar du en supportanmälan.
Relaterad läsning
Metodtips för att ändra databastabeller i Commerce Implementeringspellbook