Handling 404 errors with email – and a twist…

    April 30, 2002

Everyone has seen an HTTP 404 error at some point. You follow a link on a web page, and BOOM – File not found. Perhaps the author spelt it incorrectly, or the page was uploaded to the server by mistake. I’ll show you how to handle this gracefully*, and send an email to yourself so the problem gets fixed. But first, what did I mean when I said “Make money from error handling”?

I was authoring a site last year that wanted to offer customers their own websites. While thinking about the URL’s I should give them I got to thinking about Bigfoot. I have long had Bigfoot redirect traffic to this site from a generic “http://www.Bigfoot.com/~jamesandtara” URL that’s been around for years.

All of a sudden I had one of those Eureka moments! I’d just give my customers a URL such as “http://CoverYourASP.com/~Yourname”. This is already a common form of URL found on many sites who have “members pages”. The next step was easy. I wrote a page that would handle the 404 File not found errors, and checked if they started with a ‘~’ character. Any that did I looked up in my database and served up their page from that data. Hey presto, unlimited website URL’s for everyone!

To demonstrate the principle, here are 3 URL’s that don’t exist on this site. Click on them to see the results.

• NoFile.asp – this file doesn’t exist. Apologize to the user, and send myself a mail to fix the problem using CDONTS. [http://www.coveryourasp.com/handle404.asp?404;
[http://www.coveryourasp.com/NoFile.asp] [also contains the source code]

• ~James – because this missing “file” starts with a ~, and doesn’t contain an extension, I treat this as a customer ID. (James is in fact the only “known” customer ID.)
[http://www.coveryourasp.com/~James] [also contains the source code]

• ~WhoKnows – demonstrates how you could respond to an unknown customer ID.
[http://www.coveryourasp.com/~WhoKnow] [also contains the source code]

I had an interesting experience last night. My web site started sending emails as fast as it could informing me of missing files. I got over 500 before I FTP’d onto the server and deleted the Handle404.asp file.

The reason was a “spider” crawling my page – it had got onto this page and was trying to get to the ~James page shown above. Unfortunately it had interpreted the lack of file extension as a folder name and had helpfully appended a trailing /. Things went downhill from there because all my hyperlinks from that page are relative, not absolute.

Do you see where this is leading? Because the spider had asked for a new folder called ~James my relative links were all broken, and generated 404’s themselves! I hate to think how many emails I would have got if I was on vacation… The moral of the story: Always use absolute paths in the 404 handling page, or use a tag to keep all your URL’s relative to that rather than the current file.

James Shaw (jameswork@shawthing.com) (CoverYourASP) (http://www.coveryourasp.com/)