Wie unterdrückt man einen 404-Statuscode in einer WordPress-Seite?

13

Ich habe eine WordPress-Site, die Seiten aus einer anderen Datenbank enthält. Das Problem ist, dass diese anderen Seiten einen 404-Statuscode zurückgeben. (Die WordPress-Beiträge / Seiten sind in Ordnung.)

Die 404'ed-Seiten werden einwandfrei angezeigt, und ich habe den Text "Seite nicht gefunden" aus dem Titel-Tag in WordPress entfernt. Aber Googlebot und W3C sehen den 404-Header.

Also: Wow, sagt man Apache, er soll einen 404-Status unterdrücken? Und überschreibt Apache den 404-Header von WordPress?

Ist das sinnvoll? Welche anderen Infos und Dinge sollte ich mir ansehen?

Kann ich den Statuscode in .htaccess unterdrücken, damit ich die WP-Kerndateien nicht ändere?

markratledge
quelle

Antworten:

11

Sie können Ihren Seiten benutzerdefinierte Umschreibungen hinzufügen. Oder über den Vorlagendateien, die Ihre anderen gerade ausgegebenen Seiten umschließen header('HTTP/1.1 200 OK');.

Aaron Harun
quelle
2
Großartiger Fix, anstatt .htaccess zu verwenden und nur die Nicht-WP-PHP-Seitenvorlagen zu reparieren. Vielen Dank!
markratledge
Dafür gibt es eine eingebaute Funktion: status_header (200);
Guidod
5

WordPress bietet die Funktion status_header(), den richtigen Statuscode zurückzugeben.

Sie können diese Funktion in Ihrer WordPress-Vorlage / -Funktion aufrufen:

// Will return http status header "200 OK"
status_header(200);
Philipp
quelle
2

Wordpress ist PHP, achten Sie also darauf, wohin es sendet:

header("HTTP/1.0 404 Not Found");

quelle
Sie wurden versehentlich herabgestimmt, haben es aber geändert. Ich möchte lieber keine WP-Core-Dateien ändern.
markratledge
0

Schauen Sie sich den Hook pre_handle_404 an (hinzugefügt in Version 4.5.0): https://developer.wordpress.org/reference/hooks/pre_handle_404/

// add to your functions.php
add_filter('pre_handle_404', function($preempt, $wp_query) {
    global $wp;
    $customPages = ['custom-1','custom-2','custom-3'];

    if (in_array($wp->request, $customPages)) {
      $preempt = true;
    }

    return $preempt;
}, 10, 2);
Jonathan MacDonald
quelle