Erhalten die folgende Fehlermeldung bei Aufruf einer Landingpage. Aber nicht beim erstmaligen Aufruf sondern in unregelmäßigen Abständen. Hinweis: Nach dem Löschen des Caches wird die Landingpage wieder geladen. Die Landingpage ist eine Einkaufswelt mit einem Artikelslider. Vielleicht gibt es jemanden dem die folgende Fehlermeldung bereits bekannt vorkommt und uns einen Hinweis geben kann, in welchem Bereich wir auf die Suche gehen sollen. Shopware Bug, Berechtigungsproblem, … ?
FEHLER im phperror.log:
PHP Fatal error: Uncaught exception ‘RuntimeException’ with message ‘Error when rendering “https://www.bringts.at/shopware.php/?action=info&controller=checkout&module=widgets” (Status code is 301).’ in /var/www/vhosts/bringts.at/htdocs/vendor/symfony/http-kernel/HttpCache/Esi.php:282
Stack trace: #0 /var/www/vhosts/bringts.at/htdocs/var/cache/production_201510221322/html/en/b9/28/c22031894631a894ee64b7a8c639ca14eb0e30fbfdb7747686f6041950d3(181): Symfony\Component\HttpKernel\HttpCache\Esi->handle(Object(Shopware\Components\HttpCache\AppCache), ‘/shopware.php/?..’, ‘’, false) #1 /var/www/vhosts/bringts.at/htdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(646): include(’/var/www/vhosts…’) #2 /var/www/vhosts/bringts.at/htdocs/vendor/symfony/http-kernel/HttpCache/HttpCache.php(216): Symfony\Component\HttpKernel\HttpCache\HttpCache->restoreResponseBody(Object(Symfony\Component\HttpFoundation\Request), Object(Symfony\Component\HttpFoundation\Response)) #3 /var/www/vhosts/bringts.at/htdocs/engine/Shopware/Components/HttpCa in /var/www/vhosts/bringts.at/htdocs/vendor/symfony/http-kernel/HttpCache/Esi.php on line 282
du hast in deinem Template ein Action Widget, welches nicht kompatibel mit den Landinpages ist. In der Regel werden solche Widgets durch Plugins und individuelle Anpassungen am Template eingebunden. Das macht die Fehlersuche i.d.R. relativ schwer. Du müsstest mal schauen ob du den Fehler bewusst reproduzieren kannst und dann einmal nach und nach die Plugins deaktivieren.
Wir haben den gleichen Fehler, erst durch Abschalten des Chaches für das o.g. Element ist der Fehler behoben. Zum Zeitpunkt war lediglich 1 html widget aktiv.
Wir hatten den Fehler auch gerade, haben allerdings den Referer (sprich die Seite, auf der der User ist wenn das Widget geladen werden soll) als Fehler identifiziert.
Der 301-Redirect tritt wegen /shopware.php/ in der URL auf, der Redirect geht auf die selbe URL aber ohne das /shopware.php/ (was auch funktioniert). Der Grund, warum shopware.php in der URL war war der Referer, aus den Benachrichtigungs-Emails (wenn Artikel wieder Bestand bekommen) wurden Artikel-Links verschickt, die dieses shopware.php enthielte. Das haben wir jetzt auf SEO-URLs umgestellt und seit dem kommen die Fehler nicht mehr.
boahh… da wäre ich nie darauf gekommen. Kannst du mir noch verraten wie ihr die Email Variablen auf SEO-URLs umgestellt habt? Ich hab schon im ganzen Netz danach gesucht, aber leider nichts dazu gefunden
Leider habe ich meinem Emailtemplate nur {$sArticleLink} - der Name wird nicht ausgegeben - sonst hätte ich es so umgeschrieben.
dazu muss man leider im Code werkeln. War bei uns nicht so tragisch, da wir diese Emails mit ein bischen mehr Logik ausgestattet haben und das Versenden eh schon über ein eigenes Plugin passiert, das wir problemlos modifizieren konnten. Die betreffende Stelle in Shopware ist in der Datei engine/Shopware/Plugins/Default/Frontend/Notification/Bootstrap.php Um die Zeile 297 sieht das etwa so aus:
Da das ganze aber per Cronjob ausgeführt wird, muss man Shopware davor erst initialisieren, das machen wir folgendermaßen:
// build shop context for router to assemble seo urls
$repository = Shopware()->Container()->get('models')->getRepository('Shopware\Models\Shop\Shop');
$shop = $repository->getActiveById($shopId); // registerResources();
$context = Context::createFromShop($shop, Shopware()->Container()->get('config'));
Shopware()->Container()->get('router')->setContext($context);
Eine alternative Lösung wäre vielleicht, zu suchen, wo “shopLink” gespeichert wird (passiert, wenn sich ein Benutzer für diese Email registriert). Da wäre man in einem Shop-Context und könnte die URL gleich sauber in die Datenbank speichern.