Как подавить код состояния 404 на странице WordPress?

13

У меня есть сайт WordPress, который включает в себя страницы, извлеченные из другой базы данных. Проблема в том, что эти другие страницы возвращают код состояния 404. (Сообщения / страницы WordPress в порядке.)

Страницы 404 отображаются нормально, и я удалил текст «Страница не найдена» из тега заголовка в WordPress. Но Googlebot и W3C видят заголовок 404.

Итак: вау, кто-то говорит Apache подавить статус 404? И будет ли Apache переопределять заголовок WordPress 404?

Имеет ли это смысл? На какую другую информацию и вещи я должен смотреть?

Могу ли я подавить код состояния в .htaccess, чтобы не изменять файлы ядра WP?

markratledge
источник

Ответы:

11

Вы можете добавить пользовательские изменения на свои страницы. Или в верхней части шаблона файлы, которые обертывают ваши другие страницы, просто выводятся header('HTTP/1.1 200 OK');.

Аарон Харун
источник
2
Отличное исправление, а не использование .htaccess и для исправления только не-WP шаблонов страниц php. Благодарность!
markratledge
Для этого есть встроенная функция: status_header (200);
guidod
5

WordPress предлагает функцию status_header()для возврата правильного кода состояния.

Вы можете вызвать эту функцию внутри вашего шаблона / функции WordPress:

// Will return http status header "200 OK"
status_header(200);
Philipp
источник
2

Wordpress - это PHP, поэтому ищите, куда он отправляет что-то вроде:

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

источник
Случайно проголосовал за тебя, но изменил. Я бы предпочел не менять основные файлы WP.
markratledge
0

Взгляните на хук pre_handle_404 (добавлен в 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);
Джонатан Макдональд
источник