4

I don't want the apache of a website return any HTTP code 404,
the reason is that the accreditation council will scan all the website,
many javascript links and some incidents will cause the 404 code,
in fact, those links are valid but that checker will misjudge error.
So, i want to prevent the apache to return HTTP code 404,
How can I configure apache return HTTP cods 200 instead of 404 and show my define error page?

4
  • Why does Apache return a 404 when you say the link is valid? Commented Feb 26, 2013 at 7:27
  • 1
    like this link, the checker will get a 404 code. javascript:parent.$.fancybox.open({href%20:%20'board.php?id=472',%20type:%20'ajax'}); Commented Feb 26, 2013 at 8:16
  • 4
    Then put that in the click event, not the href. Or fix the parser. Commented Feb 26, 2013 at 8:29
  • "Can i configure that even though that file is not exist, but the apache always return HTTP Status code 200?" surely, but only a fool would do that search engines are stopping to index your site if your server act's that way for damned good reasons Commented Jul 9, 2013 at 14:25

3 Answers 3

8

From: http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html

  1. Create a blank file in your main web directory named 404.. can be blank.
  2. Add this to your .htaccess file:

    Redirect 200 /404
    ErrorDocument 404 /404
    

That will change the Apache ErrorDocument to the /404 file. But the Redirect line causes requests for /404 to issue a 200 OK response instead of a 404.

If that doesn't work it is due to rewrites no doubt. So if that's the case add this under those first 2 lines but above any other rewrite lines in your .htaccess file:

Options FollowSymLinks ExecCGI

RewriteEngine On
RewriteBase /

# If the requested file doesnt exist
# and if the requested file is not an existing directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^4]* /404 [L,S=4000]

Explained in more detail at: http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html#Automate_ErrorDocument_Triggering

Sign up to request clarification or add additional context in comments.

4 Comments

Do you know how to do this, but instead of returning a page /404, return an actual response code? Like 404 or 401
I want to change the error code from 403 to 404 . Do you know how to do this?
I'd like to use this technique to redirect any requests for missing directories or files to index.html but simply changing /404 to /index.html doesn't work. If I leave the Redirect out then index.html loads correctly but with a status 404 and I need status 200. Any ideas? (I'm using static HTML pages, so PHP headers are not an option).
I used your code but still it not working. see my question here : stackoverflow.com/questions/70554192/…
4

i think you can use this below simply code into PHP:

header("HTTP/1.1 200 OK");

you can test it.

2 Comments

Can i configure that even though that file is not exist, but the apache always return HTTP Status code 200?
This worked for me. I am using ErrorDocument 404 / which causes a 404 status. Manually setting a 200 response changed it from 404 to 200.
2

I use this:

<?php header("Status: 200 OK"); ?>

This code has to be put at the top of the .php file in the first line of code. Search engines, crawlers, browsers and anyone accessing the site will see the errordocument 404 page as a header 200.

Header 200 means the page exists. Google will crawl and index sites with header status 200.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.