Jak można pominąć kod stanu 404 na stronie WordPress?

13

Mam witrynę WordPress, która zawiera strony pobrane z innej bazy danych. Problem polega na tym, że te inne strony zwracają kod stanu 404. (Posty / strony WordPress są w porządku.)

Strony 404 wyświetlają się dobrze i usunąłem tekst „Nie znaleziono strony” z tagu tytułu w WordPress. Ale Googlebot i W3C widzą nagłówek 404.

Więc: wow, czy ktoś mówi Apache, aby pomijał status 404? I czy Apache zastąpi nagłówek 404 WordPress?

Czy to ma sens? Na jakie inne informacje i rzeczy powinienem patrzeć?

Czy mogę ukryć kod stanu w .htaccess, aby nie zmieniać podstawowych plików WP?

markratledge
źródło

Odpowiedzi:

11

Możesz dodać niestandardowe przepisywanie do swoich stron. Lub na górze plików szablonów, które zawijają tylko inne strony header('HTTP/1.1 200 OK');.

Aaron Harun
źródło
2
Świetna poprawka zamiast używania .htaccess i do naprawiania tylko szablonów stron php innych niż WP. Dzięki!
markratledge
Jest do tego wbudowana funkcja: status_header (200);
guidod
5

WordPress oferuje funkcję status_header()zwracania poprawnego kodu statusu.

Możesz wywołać tę funkcję w szablonie / funkcji WordPress:

// Will return http status header "200 OK"
status_header(200);
Philipp
źródło
2

Wordpress to PHP, więc poszukaj, gdzie wysyła coś takiego:

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

źródło
Przez przypadek przegłosowałem, ale to zmieniłem. Wolałbym nie zmieniać podstawowych plików WP.
markratledge
0

Spójrz na hak pre_handle_404 (dodany w wersji 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
źródło