in reply to How to send a "true" 404 error via Perl

Works for me with Apache.

test.cgi:

#!/usr/bin/perl print "Status: 404 Not Found\n"; print "\n";

access log:

xx.xx.xx.xx - - [17/Jan/2007:17:56:39 -0500] "GET /test.cgi HTTP/1.1" +404 - "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.1 +) Gecko/20061204 Firefox/2.0.0.1" www.example.com

I can even return an HTML message.

test.cgi:

#!/usr/bin/perl print "Status: 404 Not Found\n"; print "Content-Type: text/html\n"; print "\n"; print "<title>404 Not Found</title>\n"; print "<h1>404 Not Found</h1>\n";

access log:

xx.xx.xx.xx - - [17/Jan/2007:18:00:15 -0500] "GET /test.cgi HTTP/1.1" +404 52 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1. +1) Gecko/20061204 Firefox/2.0.0.1" www.example.com

Replies are listed 'Best First'.
Re^2: How to send a "true" 404 error via Perl
by lokiloki (Beadle) on Jan 17, 2007 at 23:04 UTC
    Hm, not for me...
    xx.xx.xx.xx- - [17/Jan/2007:15:02:15 -0800] "GET /crueljoke.pl HTTP/1. +1" 200 692 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1. +8.1.1) Gecko/20061204 Firefox/2.0.0.1"

    And looks as though others (go through google.com to avoid their cloaking) also have this problem.

      The linked case has two problems. The status header didn't come first, and "Status" was misspelled as "status".

      What's your script? Better yet, did you try mine? (Since yours is hardly a minimal test with 692 bytes of content.)

        Yes, I just tried yours:

        [server]$ pico test.cgi [server]$ chmod 755 test.cgi [server]$ grep -i test.cgi ~/logs/domain.com/http/access.log xx.xx.xx.xx- - [17/Jan/2007:15:11:50 -0800] "GET /test.cgi HTTP/1.1" 2 +00 372 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1. +1) Gecko/20061204 Firefox/2.0.0.1"

        It still gives me a non-404 error in the log (while the browser does display a 404 error page).