13

I've got a WordPress site that includes pages pulled from a different database. The problem is that these other pages return a 404 status code. (The WordPress posts/pages are fine.)

The 404'ed pages display fine, and I removed the "Page not Found" text from the title tag in WordPress. But Googlebot and W3C see the 404 header.

So: wow does one tell Apache to suppress a 404 status? And will Apache override WordPress's 404 header?

Does that make sense? What other info and things should I be looking at?

Can I suppress the status code in .htaccess so I don't change WP core files?

11

You can either add custom rewrites to your pages. Or on the top of the template files that wrap your other pages just output header('HTTP/1.1 200 OK');.

  • 2
    Great fix rather than using .htaccess and for fixing just the non-WP php page templates. Thanks! – markratledge Jun 14 '10 at 17:28
  • There is a built-in function for this: status_header(200); – guidod Feb 3 '17 at 18:31
5

WordPress offers the function status_header() to return the correct status-code.

You can call this function inside your WordPress template/function:

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

Wordpress is PHP, so look for where it's sending something like:

header("HTTP/1.0 404 Not Found");
  • Accidently downvoted you, but changed it. I'd rather not change WP core files. – markratledge Jun 14 '10 at 17:32
0

Take a look at the pre_handle_404 hook (added in 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);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.