DekGenius.com
[ Team LiB ] Previous Section Next Section

Recipe 4.6 Mass Virtual Hosting with mod_vhost_alias

Problem

You want to host many virtual hosts, all of which have exactly the same configuration.

Solution

Use VirtualDocumentRoot and VirtualScriptAlias provided by mod_vhost_alias.

VirtualDocumentRoot /www/vhosts/%-1/%-2.1/%-2/htdocs
VirtualScriptAlias  /www/vhosts/%-1/%-2.1/%-2/cgi-bin

Discussion

This recipe uses directives from mod_vhost_alias, which you may not have installed when you built Apache, as it is not one of the modules that is enabled by default.

These directives map requests to a directory built up from pieces of the hostname that was requested. Each of the variables represents one part of the hostname, so that each hostname is be mapped to a different directory.

In this particular example, requests for content from www.example.com is served from the directory /www/vhosts/com/e/example/htdocs, or from /www/vhosts/com/e/example/cgi-bin (for CGI requests). The full range of available variables is shown in Table 4-1.

Table 4-1. mod_vhost_alias variables

Variable

Meaning

%%

insert a %

%p

insert the port number of the virtual host

%M.N

insert (part of) the name

M and N may have positive or negative integer values, which have the following meanings (see Table 4-2).

Table 4-2. Meanings of variable values

Value

Meaning

0

The whole name

1

The first part of the name

-1

The last part of the name

2

The second part of the name

-2

The next-to-last part of the name

2+

The second, and all following, parts

-2+

The next-to-last, and all proceeding, parts

When the value is placed in the first part of the argument—in the M part of %M.N—it refers to parts of the hostname itself. When used in the second part—the N—refers to a particular letter from that part of the hostname. For example, in hostname www.example.com, the meanings of the variables are as shown in Table 4-3.

Table 4-3. Example values for the hostname www.example.com

Value

Meaning

%0

www.example.com

%1

www

%2

example

%3

com

%-1

com

%-2

example

%-3

www

%-2.1

e

%-2.2

x

%-2.3+

ample

Depending on the number of virtual hosts, you may wish to create a directory structure subdivided alphabetically by domain name, by top-level domain, or simply by hostname.

See Also

    [ Team LiB ] Previous Section Next Section