WP 404 error-handling?

  • Hallo Wordpress-Forum,

    ich arbeite mal wieder an einer WP-Seite, die ich nicht nennen darf (wg. NDA), und habe ein Problem:
    Wenn ich eine ungültige URL eingebe, also sowas wie https://www.domain.tld/ouhqw083/ wird mir eine Seite angezeigt, die außer dem Header und dem Footer keinen Inhalt hat.
    Es wird mir jedenfalls nicht die in dem Theme (irgend so ein proprietärer Frickelschrott, darf ich auch nicht nennen) enthaltene 404.php angezeigt, und auch nicht die Seite, die ich in der .htaccess über "[FONT=fixedsys]ErrorDocument 404 ....[/FONT]" zu definieren versucht habe.

    In der index.php oder page.php einen Abschnitt

    PHP
    [COLOR=#000000][COLOR=#0000BB]<?php
    [/COLOR][COLOR=#007700]if ( [/COLOR][COLOR=#0000BB]is_404[/COLOR][COLOR=#007700]() ) {
        [/COLOR][/COLOR]wp_redirect( '404.php' );[COLOR=#000000][COLOR=#007700]
    }
    [/COLOR][COLOR=#0000BB]?>[/COLOR][/COLOR]


    einzufügen hat ebenfalls nichts gebracht - statt dessen kommt dann eine komplett weiße Seite (obwohl die 404.php definitiv Inhalt hat, auch HTML-Inhalt, der sicher angezeigt werden würde).

    Dabei bleibt der ungültige "404"-Teil der Adresse (im obigen Beispiel "ouhqw083") auch einfach stehen, so dass es so aussieht, als ob überhaupt kein 404 Fehler generiert würde?

    Deshalb würde ich gerne mal wissen, wie das Handling von 404-Fehlern in Wordpress funktioniert, und was da alles dazwischen funken könnte?
    An Plugins, die das Potential dazu hätten, fallen mir auf der Seite in erster Linie die Sicherheitsplugins Shield, iThemes Security und vielleicht noch WPML Multilingual CMS. Das Dumme dabei: Außer iThemes lassen die sich nicht einfach "deaktivieren", ohne dass man dabei Gefahr läuft, sich die Datenbank zu zerschießen, was ich deshalb ungern machen würde.

    Daher nun wieder mein letzte Ausweg: Wer von Euch kann mir hier hilfreiche Tipps und Hinweise geben?


    Danke & viele Grüße!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • So, nun habe ich die Plugins doch deaktiviert, aber das 404-Verhalten ändert sich trotzdem nicht. Muss also irgendwo im Theme sein? Nur dass da eine 404.php existiert, die jedoch nie aufgerufen wird.

    Hat wirklich niemand eine Idee, wo dieser Aufruf abgefangen werden könnte?

  • b3317133 Danke, das habe ich gelesen, und war auch im Grunde die Information, die ich vorher schon hatte (weshalb ich es über die verschiedenen Methoden probiert habe). Das Problem ist: Irgendwas blockiert den Aufruf der 404.php Seite! Statt dessen wird wie gesagt eine "leere" Seite, die nur aus Header (mit Menü etc.) und Footer besteht, angezeigt. Das heißt, es muss irgend etwas "vorher" sein, was da den Aufruf blockiert...?

  • Wenn es kein Plugin ist, dann vermute ich mal, der Fehler liegt im Theme ... evtl. was in der functions.php?

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Diese "verschiedenen Methoden" waren leider alle grundfalsch, daher führte das auch zu nichts.

    Würde für eine Fehlersuche eins nach dem anderen alle Plugins aber v.a. erstmal diese "Sicherheits"-Plugins abschalten, gerade wenn es noch dazu mehrere gleichzeitig sind.

    Wo genau kann man denn die nicht funktionierende 404 Seite mal ansehen?

  • Wenn es kein Plugin ist, dann vermute ich mal, der Fehler liegt im Theme ... evtl. was in der functions.php?

    Danke für den Tip! Nun muss ich nur noch verstehen, was da in der functions.php so alles abgeht...
    Bisher habe ich nur in der Funktion, die "Breadcrumbs" als <li> Punkte in einer <ul> bildet, einen kurzen Eintrag

    Code
    elseif ( is_404() ) {
                   
                // 404 page
                echo '<li>' . 'Error 404' . '</li>';
            }

    gefunden, das wird es aber wohl eher nicht sein...

    Aber irgendwo muss dieses "is_404" doch auf "true" gesetzt werden, an welcher Stelle im Code passiert das?

    Ansonsten ist in der functions.php glaube ich nichts relevantes mehr, nur noch Abschnitte zum HTML-Minify und zum Emojis, Embeds, responsive images und XML-RPC deaktivieren. Oder vielleicht die Abfrage "is PAGE_CHILD"?

    Was müsste für ein "normales" 404-handling in der functions.php drin stehen?

  • So, ich habe jetzt herausgefunden, dass die (bis auf header und footer) "leere" Seite, die angezeigt wird, tatsächlich die "page.php" ist, welche sonst in dem Theme nicht benutzt wird. Es ist aber so, dass sich die URL nicht ändert, also wenn man das Beispiel von Wordpress nimmt und "https://domain.tld/fred.php" eingibt, die es nicht gibt, dann wird zwar die "page.php" geladen (warum?), aber in der Adresszeile des Browsers bleibt "fred.php" stehen. Allerdings wird die existierende page.php per https aufgerufen (und enthält im HTML-Quelltext auch alle Links als https), während sie mit einer nicht existierenden Adresse (z.B. fred.php) komplett alles nur als http-Links darstellt. Wenn ich die Seite als "http://domain.tld" aufrufe, wird aber automatisch auf https umgeleitet (ohne dass das im Hosting-Backend so eingestellt wäre).

    Gibt es eine Möglichkeit herauszufinden, wie es dazu kommt?

  • Der nächste Hinweis: Wenn ich "index.php?error=404" aufrufe, dann komme ich auf die normale index.php, und ?error=404 wird in der Adressleiste angezeigt. Wenn ich jedoch index.php?irgendwasanderes eingebe, bekomme ich einen Umleitungsfehler, also das klassische "redirect-loop".

    Kann mir jemand, der sich mit Wordpress besser auskennt, einen Tipp geben, wo das im Code definiert wird?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!