Eigene CMS-Seite für Wartungsmodus wird nicht angezeigt

Hallo,

ich habe eine individuelle CMS-Seite für den Wartungsmodus erstellt und unter Einstellungen/Shop/Stammdaten zugeordnet.

Wenn der Wartungsmodus gesetzt wird, erscheint aber immer folgende Seite:

Das ist eine andere Seite und ich frage mich, wo die überhaupt herkommt?

Spannend ist, das wir zuvor auf dem Server eine höhere Datenbankversion eingestellt haben. Ich sehe zwar keinen Sinn darin, aber es scheint, als wenn es damit etwas zutun hat. Vor der Datenbankumstellung kam die individuelle CMS-Seite für den Wartungsmodus korrekt.

Hatte jemand schon einmal ein ähnliches Problem, bzw. kennt die Ursache?

P.S.: Shopware Version 6.6.10.2 und MariaDB Version 10.11.11.

Hi,

das ist nicht vom Hoster sondern die normale maintenance.html von Shopware6 wenn ich mich nicht täusche und diese liegt in dem public Verzeichnis ( diese wird ja angezeigt wenn du ein Update z.b. machst ) .
Ich habe aber gerade mal geschaut mit einem Testshop auch 6.6.10.2 da funktioniert es mit der eigenen CMS Seite im Layout. Ich persönlich habe aber auch keine MariaDB kann also zur Zeit das nicht 1:1 nachstellen.

Das ist nicht der selbst aktivierte Wartungsmodus.

Das ist der Wartungsmodus, der angezeigt wird, wenn ein Update durchgeführt wird.

Wenn du diese Website im normalen Modus siehst, dann läuft etwas in deiner Installation ziemlich schief.

Z31-Z42:

Die Seite kommt nur, wenn ich den Wartungsmodus aktiviere. Mit einem Update hat das gar nichts zu tun.

Wie gesagt, das Phänomen tritt erst auf, seit wir auf MariaDB 10.11.11 gewechselt haben. Vorher war eine MariaDB 10.6.18 installiert und es hat korrekt funktioniert?

Was kann man tun, außer den Datenbankserver wieder auf die ältere Version umzustellen?

Normalerweise kommt diese Seite für den Wartungsmodus, wenn kein eigenes Layout in den Einstellungen zugeordnet ist:

Stattdessen kommt aber diese Seite, sobald ich den Wartungsmodus aktiviere:

Kann es sein, das es dafür in der Datenbank Einträge gibt, die jetzt aus irgendwelchen Gründen fehlen oder kaputt sind? Wenn ja, wo müsste man in der Datenbank suchen?

Vielleicht noch ein kleines Detail dazu, welches eventuell weiterhilft:

wenn der Wartungsmodus ausgeschaltet ist und man die URL https://mein-shop.de/maintenance direkt aufruft, wird diese Seite angezeigt:

Bei einem anderen Shop (gleiche Version), wo das Problem nicht vorhanden ist, erfolgt bei Eingabe von https://mein-shop.de/maintenance eine Weiterleitung auf die Hauptseite des Shops.

Irgendwie sieht es so aus, als wenn gar keine Prüfung erfolgt, ob in den Einstellungen eine CMS-Seite für den Wartungsmodus hinterlegt wurde. Sobald der Wartungsmodus aktiviert wird, wird immer auf diese Standardseite von Shopware 6 geroutet.

Die Seite maintenance.html liegt übrigens im public-Verzeichnis von Shopware.

Hallo,

ich habe jetzt herausgefunden, dass die Logik mit der Layout-Auswahl für den Wartungsmodus durch den Controller MaintenanceController.php geregelt wird.

#[Route(path: '/maintenance', name: 'frontend.maintenance.page', defaults: ['allow_maintenance' => true, '_httpCache' => true], methods: ['GET'])]

Der Controller prüft zuerst, ob der Wartungsmodus aktiviert ist. Wenn ja, wird ermittelt, ob ein individuelles Layout für den Wartungsmodus eingestellt ist. Ist dies der Fall, wird die entsprechende CMS-Seite geladen. Ansonsten wird das Standard-Layout (mit dem Kran) geladen.

Wenn man die Route /maintenance direkt aufruft, obwohl der Wartungsmodus ausgeschaltet ist, leitet der Controller zurück auf die Hauptseite des Shops.

In meinem „Problem-Shop“ wird dieser Controller, also diese Route, gar nicht aktiv. Egal, ob ich den Wartungsmodus aktiviere, oder https://www.mein-shop.de/maintenance eingebe, komme ich immer auf diese Seite:

Es ist also offenbar ein Routing-Problem. Wo würdet Ihr da den Fehler suchen?

der Befehl bin/console debug:router wirft übrigens folgendes aus:

frontend.maintenance.page GET ANY ANY /maintenance

Die Route sollte also aktiv sein. Wieso wird der Code im Controller nicht abgearbeitet?

Kannst Du in der Browser-Konsole mal schauen, ob die Seite einen Statuscode 200 oder eher 404 oder gar 500 hat? Zeigen die Logdateien was?

Hallo,

keine Fehler in den Logs und auch keine Meldungen in der Konsole.

Die Route /maintenance funktioniert einfach nicht. Warum auch immer? Statt dessen, wird der Inhalt der Datei /public/maintenance.html angezeigt, was der o.g. Ausgabe entspricht.

Ich habe übrigens ein dazugehöriges Dev-System, mit dem gleichen Release, wo das Ganze problemlos funktioniert.

Mir ist völlig unklar, warum der Controller, der für die Route verantwortlich ist, im Live-System nicht abgearbeitet wird? Es ist ja nicht einmal ein eigener Controller, sondern Core-Code, der nicht funktioniert. Ich stehe gerade komplett auf dem Schlauch, was man da machen könnte.