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?
-
Why does Apache return a 404 when you say the link is valid?CodeCaster– CodeCaster2013-02-26 07:27:49 +00:00Commented Feb 26, 2013 at 7:27
-
1like this link, the checker will get a 404 code. javascript:parent.$.fancybox.open({href%20:%20'board.php?id=472',%20type:%20'ajax'});Andy– Andy2013-02-26 08:16:28 +00:00Commented Feb 26, 2013 at 8:16
-
4Then put that in the click event, not the href. Or fix the parser.CodeCaster– CodeCaster2013-02-26 08:29:31 +00:00Commented 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 reasonsuser1614326– user16143262013-07-09 14:25:21 +00:00Commented Jul 9, 2013 at 14:25
3 Answers
From: http://www.askapache.com/htaccess/apache-status-code-headers-errordocument.html
- Create a blank file in your main web directory named 404.. can be blank.
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
4 Comments
/404, return an actual response code? Like 404 or 401/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 think you can use this below simply code into PHP:
header("HTTP/1.1 200 OK");
you can test it.
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.