Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: [newsletter_content] Links auf Nachrichtenbeiträge im Newsletter führen ins Leere

  1. #1
    Contao-Fan
    Registriert seit
    27.11.2009.
    Ort
    Bremen
    Beiträge
    463

    Standard [newsletter_content] Links auf Nachrichtenbeiträge im Newsletter führen ins Leere

    Meine Kundin nutzt das Newslettermodul in Verbindung mit [newsletter_content] schon ziemlich lange und auf einmal gibt es Probleme mit den Links. Angeblich erst seit dem letzten Newsletter, obwohl ich an der Webseite seit diesem Zeitpunkt eigentlich nichts geändert habe.

    Der Link auf einen Nachrichtenbeitrag müsste eigentlich in etwa so aussehen: https://xxx.de/aktion-mensch-foerdersystematik

    Wenn der Newsletter (in diesem Fall als Testsendung) verschickt wird, sieht der Link so aus, und führt auf eine weiße Seite
    https://xxx.de/system/modules/newsle...Rpaw&preview=1

    Ich habe ehrlich gesagt überhaut keine Ahnung, woran das liegt ...

  2. #2
    Contao-Fan
    Registriert seit
    27.11.2009.
    Ort
    Bremen
    Beiträge
    463

    Standard

    Ich habe im Log einen Eintrag gefunden, vielleicht hilft der ja weiter?

    Code:
    [2022-09-30T12:03:42.816891+02:00] request.INFO: Matched route "contao_backend". {"route":"contao_backend","route_parameters":{"_route":"contao_backend","_scope":"backend","_token_check":true,"_controller":"Contao\\CoreBundle\\Controller\\BackendController::mainAction"},"request_uri":"https://xxx.de/contao?do=newsletter&id=38&key=send&mpc=10&start=240&table=tl_newsletter&timeout=1&token=03b2f9083b6d1ecab21d4c85585f1933","method":"GET"} []
    [2022-09-30T12:03:43.349647+02:00] request.CRITICAL: Uncaught PHP Exception Doctrine\DBAL\Exception\NotNullConstraintViolationException: "An exception occurred while executing 'UPDATE tl_newsletter SET recipients='242', rejected=NULL WHERE id='38'':  SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'rejected' cannot be null" at /kunden/369846_28203/paritaet_contao_2020/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 125 {"exception":"[object] (Doctrine\\DBAL\\Exception\\NotNullConstraintViolationException(code: 0): An exception occurred while executing 'UPDATE tl_newsletter SET recipients='242', rejected=NULL WHERE id='38'':\n\nSQLSTATE[23000]: Integrity constraint violation: 1048 Column 'rejected' cannot be null at /kunden/369846_28203/xxx_contao_2020/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:125)\n[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDO\\Exception(code: 23000): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'rejected' cannot be null at /kunden/369846_28203/paritaet_contao_2020/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php:18)\n[previous exception] [object] (PDOException(code: 23000): SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'rejected' cannot be null at /kunden/369846_28203/xxx_contao_2020/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:141)"} []

  3. #3
    Contao-Fan
    Registriert seit
    27.11.2009.
    Ort
    Bremen
    Beiträge
    463

    Standard

    Wenn ich den Debug-Modus aktiviere, finde ich im dev.log folgenden (stark gekürzten) Inhalt:

    Code:
    [2022-10-05T12:00:26.165748+02:00] request.INFO: Matched route "contao_backend". {"route":"contao_backend","route_parameters":{"_route":"contao_backend","_scope":"backend","_token_check":true,"_controller":"Contao\\CoreBundle\\Controller\\BackendController::mainAction"},"request_uri":"https://xxx.de/contao","method":"GET"} []
    [2022-10-05T12:00:26.169784+02:00] security.DEBUG: Read existing security token from the session. {"key":"_security_contao_backend","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
    [2022-10-05T12:00:26.195315+02:00] security.DEBUG: User was reloaded from a user provider. {"provider":"Contao\\CoreBundle\\Security\\User\\ContaoUserProvider","username":"admin"} []
    [2022-10-05T12:00:26.461528+02:00] security.DEBUG: Stored the security token in the session. {"key":"_security_contao_backend"} []
    [2022-10-05T12:00:27.390332+02:00] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_route":"_wdt","_controller":"web_profiler.controller.profiler::toolbarAction","token":"0986dc"},"request_uri":"https://xxx.de/_wdt/0986dc","method":"GET"} []
    [2022-10-05T12:00:28.613020+02:00] request.INFO: Matched route "contao_backend_preview". {"route":"contao_backend_preview","route_parameters":{"_route":"contao_backend_preview","_scope":"backend","_allow_preview":true,"_controller":"Contao\\CoreBundle\\Controller\\BackendPreviewController"},"request_uri":"https://xxx.de/contao/preview","method":"GET"} []
    [2022-10-05T12:00:28.619187+02:00] security.DEBUG: Read existing security token from the session. {"key":"_security_contao_backend","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
    [2022-10-05T12:00:28.639326+02:00] security.DEBUG: User was reloaded from a user provider. {"provider":"Contao\\CoreBundle\\Security\\User\\ContaoUserProvider","username":"admin"} []
    [2022-10-05T12:00:28.669645+02:00] security.DEBUG: Stored the security token in the session. {"key":"_security_contao_backend"} []
    [2022-10-05T12:00:28.778723+02:00] request.INFO: Matched route "contao_backend_preview". {"route":"contao_backend_preview","route_parameters":{"_route":"contao_backend_preview","_scope":"backend","_allow_preview":true,"_controller":"Contao\\CoreBundle\\Controller\\BackendPreviewController"},"request_uri":"https://xxx.de/preview.php/contao/preview","method":"GET"} []
    [2022-10-05T12:00:28.783509+02:00] security.DEBUG: Read existing security token from the session. {"key":"_security_contao_backend","token_class":"Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken"} []
    [2022-10-05T12:00:28.802492+02:00] security.DEBUG: User was reloaded from a user provider. {"provider":"Contao\\CoreBundle\\Security\\User\\ContaoUserProvider","username":"admin"} []
    [2022-10-05T12:00:28.828007+02:00] security.DEBUG: Stored the security token in the session. {"key":"_security_contao_backend"} []
    [2022-10-05T12:00:28.941974+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message "" [] []
    [2022-10-05T12:00:28.985394+02:00] request.INFO: Matched route "tl_page.1.root". {"route":"tl_page.1.root","route_parameters":{"_token_check":true,"_controller":"Contao\\CoreBundle\\Controller\\Page\\RootPageController","_scope":"frontend","_locale":"de","_format":"html","_canonical_route":"tl_page.1","parameters":"","pageModel":{"Contao\\PageModel":[]},"_route":"tl_page.1.root","_route_object":{"Symfony\\Component\\Routing\\Route":[]}},"request_uri":"https://xxx.de/preview.php/","method":"GET"} []
    [2022-10-05T12:00:29.003811+02:00] security.DEBUG: Read existing security token from the session. {"key":"_security_contao_frontend","token_class":"Contao\\CoreBundle\\Security\\Authentication\\Token\\FrontendPreviewToken"} []
    [2022-10-05T12:00:29.008723+02:00] security.DEBUG: User was reloaded from a user provider. {"provider":"Contao\\CoreBundle\\Security\\User\\ContaoUserProvider","username":"lvhbmgo"} []
    [2022-10-05T12:00:29.011645+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message "" [] []
    [2022-10-05T12:00:29.027966+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was unable to generate route. Reason: 'Route 'cmf_routing_object' not found': Unable to generate a URL for the named route "cmf_routing_object" as such route does not exist. [] []
    [2022-10-05T12:00:29.034442+02:00] security.DEBUG: Stored the security token in the session. {"key":"_security_contao_frontend"} []
    [2022-10-05T12:00:29.140165+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message "No routes found for "/startseite/"." [] []
    [2022-10-05T12:00:29.191405+02:00] request.INFO: Matched route "tl_page.2". {"route":"tl_page.2","route_parameters":{"_token_check":true,"_controller":"Contao\\FrontendIndex::renderPage","_scope":"frontend","_locale":"de","_format":"html","_canonical_route":"tl_page.2","parameters":"","pageModel":{"Contao\\PageModel":[]},"_route":"tl_page.2","_route_object":{"Contao\\CoreBundle\\Routing\\Page\\PageRoute":[]}},"request_uri":"https://xxx.de/preview.php/startseite","method":"GET"} []
    [2022-10-05T12:00:29.203558+02:00] security.DEBUG: Read existing security token from the session. {"key":"_security_contao_frontend","token_class":"Contao\\CoreBundle\\Security\\Authentication\\Token\\FrontendPreviewToken"} []
    [2022-10-05T12:00:29.205231+02:00] security.DEBUG: User was reloaded from a user provider. {"provider":"Contao\\CoreBundle\\Security\\User\\ContaoUserProvider","username":"lvhbmgo"} []
    [2022-10-05T12:00:29.207295+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message "No routes found for "/startseite/"." [] []
    [2022-10-05T12:00:29.290838+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was unable to generate route. Reason: 'Route 'cmf_routing_object' not found': Unable to generate a URL for the named route "cmf_routing_object" as such route does not exist. [] []
    [2022-10-05T12:00:29.291350+02:00] app.DEBUG: Router Symfony\Bundle\FrameworkBundle\Routing\Router was unable to generate route. Reason: 'Route 'cmf_routing_object' not found': Unable to generate a URL for the named route "cmf_routing_object" as such route does not exist. [] []
    
    [...]

  4. #4
    Contao-Fan
    Registriert seit
    27.11.2009.
    Ort
    Bremen
    Beiträge
    463

    Standard

    Hat niemand eine Idee?

    Wie ich gerade erfahren habe, hat der Hoster (anscheinend ungefragt) einen Serverwechsel durchgeführt. Könnte es damit zusammenhängen?

  5. #5
    Contao-Fan
    Registriert seit
    27.11.2009.
    Ort
    Bremen
    Beiträge
    463

    Standard

    Ich führe hier scheinbar gerade Selbstgespräche ...

    Vom Hoster habe ich jetzt folgenden Hinweis bekommen:

    An exception occurred while executing 'UPDATE tl_newsletter SET recipients='242', rejected=NULL WHERE id='38'':\n\nSQLSTATE[23000]: Integrity constraint violation: 1048 Column 'rejected' cannot be null at [...]

    Bitte prüfen Sie einmal die Struktur Ihrer Datenbank, und ob NULL für 'rejected' zulässig sein sollte.
    Was ist da genau zu tun?

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.898
    Partner-ID
    10107

    Standard

    Die Fehler sind mittlerweile behoben.

    Der zweite gepostete Fehler hat nichts mit dem ersten zu tun. Der zweite Fehler ist ein Fehler in der Extension selbst: https://github.com/davidenke/newsletter_content/pull/35

    Der eigentliche Fehler um den es hier im Thread geht ist aber etwas komplizierter. Die newsletter_content Extension fügt keine direkten URLs in den Newsletter ein, sondern Tracking URLs, die dann mit einem Redirect auf die finale URL antworten. Durch eine Änderung bei Domainfactory antworten diese Tracking URLs nun aber plötzlich mit einem 200 Status, statt dem eigentlich von der Extension korrekt gesetzten 301 Status, wodurch der Location Reponse Header vom Browser nicht mehr in Betracht gezogen wurde und man daher einfach nur eine weiße Seite sieht (da die URL ja keinen Inhalt ausgibt, weil sie ja eigentlich mit einem Redirect antwortet).

    Da der Status Code unerwartet vom Web Server überschrieben wird, war also das Hosting verantwortlich.

    Domainfactory hat diesbezüglich kürzlich folgendes geantwortet:
    In diesem Fall handelt es sich dann um ein Problem mit unserem serverseitigen Caching. Bitte ergänzen Sie die .htaccess Ihrer Webseite einmal um die Zeile :

    Header always set Cache-Control: s-maxage=0

    Dies verhindert das der serverseitige Cache neue Elemente Ihrer Webseite aufnimmt. Wenn Sie uns nach dem setzen kurz Rückmeldung geben, können wir den Cache auf dem Server auch manuell löschen.
    Als Workaround haben wir in der Extension nun allerdings diese Zeile mit
    PHP-Code:
    throw new RedirectResponseException(base64_decode(str_pad(strtr(\Input::get('l'), '-_''+/'), strlen(\Input::get('l')) % 4'='STR_PAD_RIGHT))); 
    ersetzt. Dadurch wird anscheinend das Problem mit dem Cache umgangen.
    » sponsor me via GitHub or PayPal or Revolut

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •