TWIG has built in support for virtual hosting, allowing a single TWIG installation to serve different content to multiple domains. This document covers the setup of TWIG to support virtual hosts. For information on configuring your web server for virtual hosting, please refer to your web server's documentation. Virtual hosts are defined in TWIG by defining values for the $vhosts[] array. An example of how to do this is included in the default config/config.inc.php3 file. To enable virutal hosting, uncomment the $vhosts line in the config file by removing the "//" at the beginning of the line. Then replace <server_name> with the name that your web server will provide as the SERVER_NAME for a given virtual host. For example, for a virtual host called "virtualdomain.com" the line would look like this: $vhosts["virtualdomain.com"] = "config/virtualdomain.com"; Any directory may be defined as the config directory for a given virtual host, but it generally makes sense to place the virtual host config directories under TWIG's config/ directory. The path of the directory is relative to the directory into which TWIG is installed. Any file found in the config/ directory may then be placed in the virtual host configuration directory. These files will override the base configuration found in config/. The configuration files in the virtual host config directory need not be complete copies of the ones in the config/ directory. They only need to define any variables which should be different from that found in the file in the base configuration. No files are required in the virtual host directory, but any file placed there will be used. For example, consider a host "somehost.com" that is also hosting "virtualhost1.com" and "virtualhost2.com". "somehost.com" would be configured normally using the files in the config/ directory of TWIG. Its config/config.inc.php3 file should contain the following lines: $vhosts["virtualhost1.com"] = "config/virtualhost1.com"; $vhosts["virtualhost2.com"] = "config/virtualhost2.com"; This would setup config directories for the two virtual hosts. If virtualhost1.com was setup to use the same users and database as somehost.com, and only the $config["fromdomain"] was to be different, then all that would be necessary is to create the file config/virtualhost1.com/config.inc.php3 containing the following line: <?php $config["fromdomain"] = "virtualhost1.com"; ?> Now suppose virtualhost2.com had an entirely different set of users on an entirely different mail server. Then all that would need to be done would be to create a config/virtualhost2.com/config.inc.php3 that includes the following: <?php $config["fromdomain"] = "virtualhost2.com"; $config["imap_server"] = "mail.virtualdomain2.com"; ?> create a config/virtualhost2.com/dbconfig.inc.php3 file that contains the following line: <?php $dbconfig["defaultdb"] = "twig_virtualhost2"; ?> and then create the twig_virtualhost2 database in the database server using the same database installation method used for the base configuration. Of course the configurations can vary as much or as little as needed, with different auth providers, session types, default languages, mailfooters, login pages, announcements, or anything else that is configured in the config/ directory. Any connection to a SERVER_NAME that does not match a $vhosts[] value will simply be treated as a connection to somehost.com, and only the files in the config/ directory will be used. It is therefore wise to have a valid TWIG setup in the config/ directory even if all anticipated connections will be to virtual hosts. There are basically three types of files in the config directories, and each is handled slightly differently. Type 1: Standard config files ============================= config.inc.php3 dbconfig.inc.php3 defaults.inc.php3 images.inc.php3 These files simply define configuration variables. If these files exist in the virtual host configuration directory, any values contained therein will override the values set by the corresponding file in the config/ directory. Values not set by the files in the virtual host config directory will default to the values set by the files in the config/ directory. Type 2: Required included files =============================== footer.inc.php3 header.inc.php3 login.footer.inc.php3 login.form.inc.php3 login.header.inc.php3 mainmenu.inc.php3 newusergroups.inc.php3 These are files that are required for TWIG to operate correctly. This does not mean that they have to exist in each virtual host configuration directory, but if they do not exist in a virtualhost directory, the corresponding file in the config/ directory will be used instead. Type 3: Non-required included files =================================== announcements.inc.php3 mailfooter.inc.php3 These are files that are not required, but cause TWIG to behave differently if they exist. If these files do not exist in the virtual host config directory, they are NOT loaded from the config/ directory. Note: Throughout this file, the base configuration directory has been described using its default value "config/" However, the base configuration directory may be changed easily by modifying the line in index.php3 which reads: $config_dir = "config/"; and changing "config/" to another path where your configuration files will be stored. The path defined there is relative to the TWIG directory.