Bei WooCommerce kann es passieren, dass der Bestellvorgang in eine Schleife (Loop) gerät. Das ist besonders ärgerlich, wenn man es erst zu spät merkt. In meinem Fall passierte dieses Problem nach einem Umzug von einem Webspace eines renommierten Webhosters auf einen vServer mit Nginx.
Der Fehler äußert sich meist darin, dass beim klicken auf “Zur Kasse” nicht auf /kasse/bezahlung (oder was auch immer da in eurer Konfiguration als Bezahl-Zusatz eingetragen wurde) verlinkt, sondern eben nur auf /kasse. Zusätzlich erscheint zumeist die folgende Meldung:
Der Gesamtbetrag der Bestellung wurde aktualisiert. Bitte bestätigen Sie Ihre Bestellung, indem Sie den Bestellung ausführen-Button am Ende der Seite klicken.
In Englisch:
The order totals have been updated. Please confirm your order by pressing the Place Order button at the bottom of the page.
Der Fehler kann, soweit ich das herausgefunden habe, jedoch mehrere Ursachen haben:
- Umzug der Webseite
- Wechsel der Webserver (unsicher, aber möglich)
- falsche Konfiguration des Webservers
- ein “störendes” Plugin in der WordPress-Installation
- eine HTTPS (SSL) Fehleinstellung
- lokales Browsercaching am Client
Da ich wirklich lange gebraucht habe, um das Problem zu finden und zu beheben, möchte ich jetzt hier posten was ich alles getan habe bis es wieder funktionierte.
1. Auf korrekte Nginx-Konfiguration achten
Seit gut zwei Jahren verwende ich die gleiche Nginx-Konfiguration, da ich mir einst ein kleines Script geschrieben habe, welches mir die Konfigurationen automatisch erstellt, User anlegt usw. – da könnte ein kleiner Fehler gelegen haben. Für WordPress in Verbindung mit Nginx ist es ratsam, zur Standardkonfiguration zu greifen und diese bei Bedarf anzupassen.
2. Nach störenden Plugins ausschau halten
Zum Beispiel:
- 404 Simple Redirect
- WordPress HTTPS (SSL)
- Caching-Plugins
- und weitere, die ähnliche Funktionen erfüllen
Im Fall von “WordPress HTTPS” habe ich gelesen, es solle darauf geachtet werden, dass nicht die WooCommerce “Force SSL”-Option aktiviert und gleichzeitig “WordPress HTTPS” verwendet werden solle. Also hier am besten für eines entscheiden – WordPress HTTPS ODER die WooCommerce “Force SSL”-Option.
Besagte Option findet ihr im WooCommerce-Optionsmenü unter “Kasse” -> “Checkout”, soweit ich mich da korrekt an die deutschen Begriffe erinnere. Im Englischen heißt das Menü “Checkout” -> “Checkout Process”.
3. Browsercache leeren
Meine Erfahrung hat gezeigt, dass es hilft, den eigenen Cache zu leeren. Vermutlich bleiben Cookies und andere Reste nach der Behebung der Probleme noch vorhanden und sorgen dafür, dass der Loop auch weiterhin bestehen bleibt.
Also mal mit einem anderen Browser testen und die Caches leeren. (Aber richtig! Kein simples Strg+F5 ;) )
4. Darauf achten, die “Zielseiten” (die Seiten mit den Shortcodes) im WooCommerce-Backend richtig zu setzen
Auf wpmudev hatte jemand ein Problem, das Anfangs aussah wie ein fehlerhafter HTTPS-Redirect, sich dann aber herausstellte, dass er schlichtweg die gleiche Seite als Checkout-Ziel gesetzt hatte, wie die Übersichtsseite. Also immer schön auf alle Zielseiten in der WooCommerce-Einstellung achten. Dieser Fehler dürfte allerdings nur bei Neuinstallationen von WooCommerce auftreten, da sich diese Daten beim Umzug nicht ändern.
5. Caches am Server leeren (sofern vorhanden)
Sollte alles noch nicht funktioniert haben, liegt die letzte Hoffnung wohl im leeren eventuell vorhandener Caches am Server und der Caches eventuell vorhandener WordPress-Caching-Plugins.
Viel Erfolg und schreibt mal in die Kommentare, wenn es was gebracht hat.
Weitere, nicht im Text verlinkte Quellen:
Redirect loop error with WooCommerce
WooCommerce-Dokumentation: SSL and HTTPS