======================
Simple Virtual-Hosting
======================

------------------------
Module: mod_simple_vhost
------------------------

:Author: Jan Kneschke
:Date: $Date: 2004/08/29 09:43:49 $
:Revision: $Revision: 1.1 $

:abstract:
  virtual hosting

.. meta::
  :keywords: lighttpd, virtual hosting

.. contents:: Table of Contents

Description
===========

Simple assumption:

Every virtual host is in a directory below a base directory in a path that
is the same as the name of the vhost. Below this vhost path might be an
extra directory which is the document root of the vhost.

The document root for each vhost is built from three values:

- server-root
- hostname
- document-root

The complete document root is constructed either by ::

  server-root + hostname + document-root

or if this path does not exist by ::

  server-root + default-host + document-root

A small example should make this idea clear: ::

  /var/www/
  /var/www/logs/
  /var/www/servers/
  /var/www/servers/www.example.org/
  /var/www/servers/www.example.org/lib/
  /var/www/servers/www.example.org/pages/
  /var/www/servers/mail.example.org/
  /var/www/servers/mail.example.org/lib/
  /var/www/servers/mail.example.org/pages/

  simple-vhost.server-root = "/var/www/servers/"
  simple-vhost.default-host = "www.example.org"
  simple-vhost.document-root = "pages"

You can use symbolic links to map several hostnames to the same directory.

Conditionals vs. simple-vhost
-----------------------------

You have to keep in mind that conditionals and simple-vhost interfere
with one another. ::

  simple-vhost.server-root = "/var/www/servers/"
  simple-vhost.default-host = "www.example.org"
  simple-vhost.document-root = "pages"

  $HTTP["host"] == "news.example.org" {
    server.document-root = "/var/www/servers/news2.example.org/pages/"
  }

When ``news.example.org`` is requested, the ``server.document-root``
will be set to ``/var/www/servers/news2.example.org/pages/``, but
simple-vhost will overwrite it shortly afterwards.

If ``/var/www/servers/news.example.org/pages/`` exists, that will be
used. If not, ``/var/www/servers/www.example.org/pages/`` will be taken
because it is the default.

To use conditionals together with simple-vhost, you should do this: ::

  $HTTP["host"] !~ "^(news\.example\.org)$" {
    simple-vhost.server-root = "/var/www/servers/"
    simple-vhost.default-host = "www.example.org"
    simple-vhost.document-root = "pages"
  }

  $HTTP["host"] == "news.example.org" {
    server.document-root = "/var/www/servers/news2.example.org/pages/"
  }

It will enable simple vhosting for all hosts other than ``news.example.org``.

Options
=======

simple-vhost.server-root
  root of the virtual host

simple-vhost.default-host
  use this hostname if the requested hostname does not have its own directory

simple-vhost.document-root
  path below the vhost directory

