hunchentoot-vhost Copyright (c) 2007 Cyrus Harmon See LICENSE file for details This package is for implementing so-called virtual hosts in a mechanism similar to that of hunchentoot's easy-handlers. Hunchentoot-vhost provides a "virtual host" mechanism such that a single server (which listens on a single port, as is the Hunchentoot design) can serve different content depending on the host name used in the http request so that, for example, http://host1.bogus.com/ and http://host2.bogus.com/ could serve up different pages. Features: * Multiple names for a given host -- A single virtual host can handle multiple host names such that, for instance, http://www.bogus.com/ and http://bogus.com can point to the same page. * Shared across multiple hunchentoot servers -- While a single hucnhentoot server listens on a single port, one often runs multiple servers in a single process, especially for the common case of a server listening for HTTP requests on one port and HTTPS requests on another port. hunchentoot-vhost virtual hosts can be shared across multiple servers (within a single lisp process, of course) To create a virtual host, ues the make-virtual-host function: (defparameter *localhost-host* (hunchentoot-vhost:make-virtual-host "localhost" '("localhost" "127.0.0.1") This creates the *localhost-host* virtual host, which can listen for hunchentoot requests with host "localhost" or 127.0.0.1. In order to tell the hunchentoot:server that it should listen for requests to this virtual host, one calls the hunchentoot-vhost::add-virtual-host funciton: (hunchentoot-vhost::add-virtual-host *localhost-host* server) In order for the hunchentoot-vhost to field requests, one adds functions to the hunchentoot-vhost::dispatch-table of the virtual-host object. For instance: (pushnew (lambda (request &optional vhost) (declare (ignore vhost)) (really-dispatch-this-request request)) (hunchentoot-vhost::dispatch-table host) :test #'equal) which would call really-dispatch-this-request in response to a request to this virtual host.