Chapter 9. Error Handling
When you’re running a web site, things go wrong. And when they do, it’s important that they are handled gracefully, so that the user experience is not too greatly diminished. In this chapter, you’ll learn how to handle error conditions, return useful messages to the user, and capture information that will help you fix the problem so that it does not happen again.
9.1. Handling a Missing Host Field
Problem
You have multiple virtual hosts in your configuration, and at least
one of them is name-based. For name-based virtual hosts to work
properly, the client must send a valid
Host
field in the request header. This
recipe describes how you can deal with situations in which the field
is not included.
Solution
Add the following lines to your httpd.conf file:
Alias /NoHost.cgi /usr/local/apache/cgi-bin/NoHost.cgi RewriteEngine On RewriteCond "%{HTTP_HOST}" "^$" RewriteRule "(.*)" "/NoHost.cgi$1" [PT]
The file NoHost.cgi can contain something like the following:
#! /usr/bin/perl -Tw my $msg = "To properly direct your request, this server requires that\n" . "your Web client include the HTTP 'Host' request header field.\n" . "The request which caused this response did not include such\n" . "a field, so we cannot determine the correct document for you.\n"; print "Status: 400 Bad Request\r\n\" . "Content-type: text/plain\r\n\" . 'Content-length: ' . length($msg) . "\r\n\" . "\r\n\" . $msg; exit(0);
Discussion
Once the directives in the solution are in place, all requests made ...
Get Apache Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.