NAME
Apache::AddHostPath - Adds some or all of the hostname and port
to the URI
SYNOPSIS
# in httpd.conf
PerlTransHandler Apache::AddHostPath
DESCRIPTION
This module transforms the requested URI based on the hostname
and port number from the http request header. It allows you to
manage an arbitrary number of domains and/or sub-domains all
pointed to the same document root, but for which you want a
combination of shared and distinct files.
Essentially the module implements Apache's URI translation phase
by attempting to use some or all of the URL hostname and port
number as the base of the URI. It simply does file and directory
existence tests on a series of URIs (from most-specific to
least-specific) and sets the URI to the most specific match.
If the requested is:
URL:
http://www.alpha.cvsroot.org:8080/index.html
URI: /index.html
Apache::AddHostPath would go through the following list of
possible paths and set the new URI based on the first match
which passes a -f or -d existence test:
$docRoot/org/cvsroot/alpha/www/8080/index.html
$docRoot/org/cvsroot/alpha/www/index.html
$docRoot/org/cvsroot/alpha/index.html
$docRoot/org/cvsroot/index.html
$docRoot/org/index.html
$docRoot/index.html
For example if you have three domains cvsroot.org,
ransommoney.com, and inputsignal.com using the same apache
instance and DocumentRoot (without using VirtualHosts). If you
assume that the DocumentRoot contains the following files and
directories:
images/
images/bg.gif
org/
org/cvsroot/
org/cvsroot/images/logo.gif
com/
com/images/
com/images/bg.gif
com/ransommoney/
com/ransommoney/images/
com/ransommoney/images/logo.gif
com/ransommoney/images/bg.gif
com/inputsignal/
com/inputsignal/images/
com/inputsignal/images/logo.gif
Apache::AddHostPath would transform the following requested
URL/URIs as follows:
Input URL:
http://cvsroot.org/images/bg.gif
Input URI: /images/bg.gif
Output URI: /images/bg.gif
Input URL:
http://cvsroot.org/images/logo.gif
Input URI: /images/logo.gif
Output URI: /org/cvsroot/images/logo.gif
Input URL:
http://ransommoney.com/images/bg.gif
Input URI: /images/bg.gif
Output URI: /com/ransommoney/images/bg.gif
Input URL:
http://inputsignal.com/images/bg.gif
Input URI: /images/bg.gif
Output URI: /com/images/bg.gif
It also correctly handles extra path info to CGI scripts. For
example if you add the following files and dirs to the above
example:
cgi-bin/
cgi-bin/magic.pl
org/cvsroot/cgi-bin/
org/cvsroot/cgi-bin/magic.pl
Apache::AddHostPath would transform the following requested
URL/URIs as follows:
Input URL:
http://cvsroot.org/cgi-bin/magic.pl/param1/param2
Input URI: /cgi-bin/magic.pl/param1/param2
Output URI: /org/cvsroot/cgi-bin/magic.pl/param1/param2
Input URL:
http://ransommoney.com/cgi-bin/magic.pl/param1
Input URI: /cgi-bin/magic.pl/param1
Output URI: /cgi-bin/magic.pl/param1
You can debug this URI translation by setting your Apache
LogLevel to "debug". This will show add messages to your error
log showing every URI combination tested and which one it ended
up using.
This module adds powerful yet simplistic inheritance
capabilities to a multi-domain server. A number of domains could
be set to a single flat document root initially. Then individual
files could be overridden for a hostname, or set of hostnames,
simply by creating the appropriate directory structures and
specific files while leaving the rest of the domain untouched.
AUTHOR
Robert C W Jenks,
[email protected]
SEE ALSO
perl(1). the mod_perl manpage
COPYRIGHT
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.