¿Cómo se suprime un código de estado 404 en una página de WordPress?

13

Tengo un sitio de WordPress que incluye páginas extraídas de una base de datos diferente. El problema es que estas otras páginas devuelven un código de estado 404. (Las publicaciones / páginas de WordPress están bien).

Las páginas 404'ed se muestran bien, y eliminé el texto "Página no encontrada" de la etiqueta del título en WordPress. Pero Googlebot y W3C ven el encabezado 404.

Entonces: ¿qué le dice uno a Apache que suprima un estado 404? ¿Apache anulará el encabezado 404 de WordPress?

¿Tiene sentido? ¿Qué otra información y cosas debo mirar?

¿Puedo suprimir el código de estado en .htaccess para no cambiar los archivos principales de WP?

markratledge
fuente

Respuestas:

11

Puede agregar reescrituras personalizadas a sus páginas. O en la parte superior de los archivos de plantilla que envuelven las otras páginas que acaba de imprimir header('HTTP/1.1 200 OK');.

Aaron Harun
fuente
2
Gran solución en lugar de usar .htaccess y para arreglar solo las plantillas de página php que no son WP. ¡Gracias!
markratledge
Hay una función incorporada para esto: status_header (200);
guidod
5

WordPress ofrece la función status_header()de devolver el código de estado correcto.

Puede llamar a esta función dentro de su plantilla / función de WordPress:

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

Wordpress es PHP, así que busca a dónde envía algo como:

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

fuente
Accidentalmente lo rechazó, pero lo cambió. Prefiero no cambiar los archivos principales de WP.
markratledge
0

Eche un vistazo al gancho pre_handle_404 (agregado en v4.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
fuente