<p>Following are some specific examples of things you can do in
your HTML documents with SSI.</p>
- <hr />
<h3><a name="docmodified" id="docmodified">When was this document
modified?</a></h3>
<p>Following are some specific examples of things you can do in
your HTML documents with SSI.</p>
- <hr />
<section id="docmodified"><title>When was this document
modified?</title>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--><title>URL Rewriting Guide - Apache HTTP Server</title><link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /><link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /><link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link href="../images/favicon.ico" rel="shortcut icon" /></head><body id="manual-page"><div id="page-header"><p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="../images/feather.gif" /></div><div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs-project/">Documentation</a> > <a href="../">Version 2.0</a></div><div id="page-content"><div id="preamble"><h1>URL Rewriting Guide</h1>
<div class="note">
- <address>Originally written by<br />
- Ralf S. Engelschall <rse@apache.org><br />
- December 1997</address>
+ <p>Originally written by<br />
+ <cite>Ralf S. Engelschall <rse@apache.org></cite><br />
+ December 1997</p>
</div>
<p>This document supplements the <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>On some webservers there are more than one URL for a
canonical one only.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We do an external HTTP redirect for all non-canonical
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>...</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<div class="example"><pre>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Usually the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>
data pool work for subsequent requests.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We just redirect the URL <code>/</code> to
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Every webmaster can sing a song about the problem of
complicated URL rewritings to CGI scripts etc.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution to this subtle problem is to let the server
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>We want to create a homogeneous and consistent URL
host.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>First, the knowledge of the target servers come from
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Many webmasters have asked for a solution to the
will replace the old one over time.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution is trivial with <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Some sites with thousands of users usually use a
<code>/home/<strong>b</strong>/bar/.www/anypath</code>.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use the following ruleset to expand the tilde URLs
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>This really is a hardcore example: a killer application
Web or CGI stuff to be there.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution has two parts: The first is a set of CGI
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>When switching from the NCSA webserver to the more
<code>/path/to/page.map</code>.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a global rule to remove the prefix on-the-fly for
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Sometimes it is necessary to let the webserver search
other techniques cannot help.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We program a explicit ruleset which searches for the
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Perhaps you want to keep status information between
information.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a rewrite rule to strip out the status information
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume that you want to provide
machine.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>For HTTP/1.0 requests there is no solution, but for
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>We want to redirect homedir URLs to another webserver
virtual host contexts.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>Just a rewrite condition:</p>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>A typical FAQ about URL rewriting is how to redirect
CGI-script!</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The first solution has the best performance but less
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Sometimes we need more control (concerning the
How can we redirect to such a URL?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We have to use a kludge by the use of a NPH-CGI script
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Do you know the great CPAN (Comprehensive Perl Archive
implemented via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>First we notice that from version 3.0.0
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>When tricks like time-dependent content should happen a
via <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>There are a lot of variables named <code>TIME_xxx</code>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we make URLs backward compatible (still
bunch of <code>.html</code> files to <code>.phtml</code>?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We just rewrite the name to its basename and test for
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume we have recently renamed the page
the pages was renamed.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We rewrite the old URL to the new one internally via the
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume again that we have recently renamed the page
change, too.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We force a HTTP redirect to the new URL which leads to a
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>At least for important top-level pages it is sometimes
browsers and a average feature version for all others.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We cannot use content negotiation because the browsers do
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume there are nice webpages on remote hosts we want
there is need (updated data on the remote host).</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>To provide this feature we map the remote webpage or even
the complete remote webarea to our namespace by the use
- of the <i>Proxy Throughput</i> feature
+ of the <dfn>Proxy Throughput</dfn> feature
(flag <code>[P]</code>):</p>
<div class="example"><pre>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>...</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<div class="example"><pre>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>This is a tricky way of virtually running a corporate
one.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>First, we have to make sure that our firewall still
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Suppose we want to load balance the traffic to
(a total of 6 servers). How can this be done?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>There are a lot of possible solutions for this problem.
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>...</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<div class="example"><pre>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>On the net there are a lot of nifty CGI programs. But
lot of time changing the various hyperlinks.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution here is to provide a special new URL format
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we transform a static page
by the browser/user.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We just rewrite the URL to the CGI-script and force the
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Here comes a really esoteric feature: Dynamically
contents gets refreshed.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
This is done via the following ruleset:
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Wouldn't it be nice while creating a complex webpage if
Impossible?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>No! We just combine the MIME multipart feature, the
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>The <code class="directive"><a href="../mod/core.html#virtualhost"><VirtualHost></a></code> feature of Apache is nice
choice.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>To provide this feature we map the remote webpage or even
the complete remote webarea to our namespace by the use
- of the <i>Proxy Throughput</i> feature (flag <code>[P]</code>):</p>
+ of the <dfn>Proxy Throughput</dfn> feature (flag <code>[P]</code>):</p>
<div class="example"><pre>
##
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we block a really annoying robot from
rid of such a robot.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a ruleset which forbids the URLs of the webarea
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume we have under <code>http://www.quux-corp.de/~quux/</code>
useless traffic to our server.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>While we cannot 100% protect the images from inclusion,
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we forbid a list of externally configured hosts
from using our server?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>For Apache >= 1.3b6:</p>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we forbid a certain host or even a user of a
special host from using the Apache proxy?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We first have to make sure <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Sometimes a very special authentication is needed, for
when using the Basic Auth via <code class="module"><a href="../mod/mod_access.html">mod_access</a></code>).</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a list of rewrite conditions to exclude all except
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we program a flexible URL Deflector which acts
many referring pages as we like?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>Use the following really tricky ruleset...</p>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>A FAQ: How can we solve the FOO/BAR/QUUX/etc.
<code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>...</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>Use an external <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>, i.e. a program which acts
<summary>
<note>
- <address>Originally written by<br />
- Ralf S. Engelschall <rse@apache.org><br />
- December 1997</address>
+ <p>Originally written by<br />
+ <cite>Ralf S. Engelschall <rse@apache.org></cite><br />
+ December 1997</p>
</note>
<p>This document supplements the <module>mod_rewrite</module>
<title>Canonical URLs</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>On some webservers there are more than one URL for a
canonical one only.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We do an external HTTP redirect for all non-canonical
<title>Canonical Hostnames</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>...</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<example><pre>
<title>Moved <code>DocumentRoot</code></title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Usually the <directive module="core">DocumentRoot</directive>
data pool work for subsequent requests.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We just redirect the URL <code>/</code> to
<title>Trailing Slash Problem</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Every webmaster can sing a song about the problem of
complicated URL rewritings to CGI scripts etc.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution to this subtle problem is to let the server
<title>Webcluster through Homogeneous URL Layout</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>We want to create a homogeneous and consistent URL
host.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>First, the knowledge of the target servers come from
<title>Move Homedirs to Different Webserver</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Many webmasters have asked for a solution to the
will replace the old one over time.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution is trivial with <module>mod_rewrite</module>.
<title>Structured Homedirs</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Some sites with thousands of users usually use a
<code>/home/<strong>b</strong>/bar/.www/anypath</code>.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use the following ruleset to expand the tilde URLs
<title>Filesystem Reorganization</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>This really is a hardcore example: a killer application
Web or CGI stuff to be there.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution has two parts: The first is a set of CGI
<title>NCSA imagemap to Apache <code>mod_imap</code></title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>When switching from the NCSA webserver to the more
<code>/path/to/page.map</code>.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a global rule to remove the prefix on-the-fly for
<title>Search pages in more than one directory</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Sometimes it is necessary to let the webserver search
other techniques cannot help.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We program a explicit ruleset which searches for the
<title>Set Environment Variables According To URL Parts</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Perhaps you want to keep status information between
information.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a rewrite rule to strip out the status information
<title>Virtual User Hosts</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume that you want to provide
machine.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>For HTTP/1.0 requests there is no solution, but for
<title>Redirect Homedirs For Foreigners</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>We want to redirect homedir URLs to another webserver
virtual host contexts.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>Just a rewrite condition:</p>
<title>Redirect Failing URLs To Other Webserver</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>A typical FAQ about URL rewriting is how to redirect
CGI-script!</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The first solution has the best performance but less
<title>Extended Redirection</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Sometimes we need more control (concerning the
How can we redirect to such a URL?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We have to use a kludge by the use of a NPH-CGI script
<title>Archive Access Multiplexer</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Do you know the great CPAN (Comprehensive Perl Archive
implemented via <module>mod_rewrite</module>?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>First we notice that from version 3.0.0
<title>Time-Dependent Rewriting</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>When tricks like time-dependent content should happen a
via <module>mod_rewrite</module>?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>There are a lot of variables named <code>TIME_xxx</code>
<title>Backward Compatibility for YYYY to XXXX migration</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we make URLs backward compatible (still
bunch of <code>.html</code> files to <code>.phtml</code>?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We just rewrite the name to its basename and test for
<title>From Old to New (intern)</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume we have recently renamed the page
the pages was renamed.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We rewrite the old URL to the new one internally via the
<title>From Old to New (extern)</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume again that we have recently renamed the page
change, too.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We force a HTTP redirect to the new URL which leads to a
<title>Browser Dependent Content</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>At least for important top-level pages it is sometimes
browsers and a average feature version for all others.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We cannot use content negotiation because the browsers do
<title>Dynamic Mirror</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume there are nice webpages on remote hosts we want
there is need (updated data on the remote host).</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>To provide this feature we map the remote webpage or even
the complete remote webarea to our namespace by the use
- of the <i>Proxy Throughput</i> feature
+ of the <dfn>Proxy Throughput</dfn> feature
(flag <code>[P]</code>):</p>
<example><pre>
<title>Reverse Dynamic Mirror</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>...</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<example><pre>
<title>Retrieve Missing Data from Intranet</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>This is a tricky way of virtually running a corporate
one.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>First, we have to make sure that our firewall still
<title>Load Balancing</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Suppose we want to load balance the traffic to
(a total of 6 servers). How can this be done?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>There are a lot of possible solutions for this problem.
<title>Reverse Proxy</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>...</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<example><pre>
<title>New MIME-type, New Service</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>On the net there are a lot of nifty CGI programs. But
lot of time changing the various hyperlinks.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>The solution here is to provide a special new URL format
<title>From Static to Dynamic</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we transform a static page
by the browser/user.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We just rewrite the URL to the CGI-script and force the
<title>On-the-fly Content-Regeneration</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Here comes a really esoteric feature: Dynamically
contents gets refreshed.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
This is done via the following ruleset:
<title>Document With Autorefresh</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Wouldn't it be nice while creating a complex webpage if
Impossible?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>No! We just combine the MIME multipart feature, the
<title>Mass Virtual Hosting</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>The <directive type="section" module="core"
choice.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>To provide this feature we map the remote webpage or even
the complete remote webarea to our namespace by the use
- of the <i>Proxy Throughput</i> feature (flag <code>[P]</code>):</p>
+ of the <dfn>Proxy Throughput</dfn> feature (flag <code>[P]</code>):</p>
<example><pre>
##
<title>Blocking of Robots</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we block a really annoying robot from
rid of such a robot.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a ruleset which forbids the URLs of the webarea
<title>Blocked Inline-Images</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Assume we have under <code>http://www.quux-corp.de/~quux/</code>
useless traffic to our server.</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>While we cannot 100% protect the images from inclusion,
<title>Host Deny</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we forbid a list of externally configured hosts
from using our server?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>For Apache >= 1.3b6:</p>
<title>Proxy Deny</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we forbid a certain host or even a user of a
special host from using the Apache proxy?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We first have to make sure <module>mod_rewrite</module>
<title>Special Authentication Variant</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>Sometimes a very special authentication is needed, for
when using the Basic Auth via <module>mod_access</module>).</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>We use a list of rewrite conditions to exclude all except
<title>Referer-based Deflector</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>How can we program a flexible URL Deflector which acts
many referring pages as we like?</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>Use the following really tricky ruleset...</p>
<title>External Rewriting Engine</title>
<dl>
- <dt><strong>Description:</strong></dt>
+ <dt>Description:</dt>
<dd>
<p>A FAQ: How can we solve the FOO/BAR/QUUX/etc.
<module>mod_rewrite</module>...</p>
</dd>
- <dt><strong>Solution:</strong></dt>
+ <dt>Solution:</dt>
<dd>
<p>Use an external <directive module="mod_rewrite"
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/core.html">core</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/core.html">core</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_access.html">mod_access</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_auth.html">mod_auth</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_auth_anon.html">mod_auth_anon</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_auth_anon.html">mod_auth_anon</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code></td>
- <td align="center">?</td>
+ <td><code class="module"><a href="../mod/mod_auth_dbm.html">mod_auth_dbm</a></code></td>
+ <td class="centered">?</td>
<td>with own <code>libdb.a</code></td>
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_cern_meta.html">mod_cern_meta</a></code></td>
- <td align="center">?</td>
+ <td><code class="module"><a href="../mod/mod_cern_meta.html">mod_cern_meta</a></code></td>
+ <td class="centered">?</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_digest.html">mod_digest</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_digest.html">mod_digest</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></td>
- <td align="center">-</td>
+ <td><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></td>
+ <td class="centered">-</td>
<td>no shared libs</td>
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_env.html">mod_env</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_env.html">mod_env</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_example.html">mod_example</a></code></td>
- <td align="center">-</td>
+ <td><code class="module"><a href="../mod/mod_example.html">mod_example</a></code></td>
+ <td class="centered">-</td>
<td>(test bed only)</td>
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_imap.html">mod_imap</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_imap.html">mod_imap</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_info.html">mod_info</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_info.html">mod_info</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_log_agent.html">mod_log_agent</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_log_agent.html">mod_log_agent</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_log_referer.html">mod_log_referer</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_log_referer.html">mod_log_referer</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code></td>
- <td align="center">?</td>
+ <td><code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code></td>
+ <td class="centered">?</td>
<td>not ported yet</td>
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></td>
+ <td class="centered">+</td>
<td>untested</td>
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_speling.html">mod_speling</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_speling.html">mod_speling</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></td>
- <td align="center">+</td>
+ <td><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></td>
+ <td class="centered">+</td>
<td />
</tr>
<tr>
- <td align="left"><code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code></td>
- <td align="center">?</td>
+ <td><code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code></td>
+ <td class="centered">?</td>
<td>untested</td>
</tr>
</table>
</tr>
<tr>
- <td align="left"><code><a href="http://java.apache.org/">mod_jserv</a></code></td>
- <td align="center">-</td>
+ <td><code><a href="http://java.apache.org/">mod_jserv</a>
+ </code></td>
+ <td class="centered">-</td>
<td>JAVA still being ported.</td>
</tr>
<tr>
- <td align="left"><code><a href="http://www.php.net/">mod_php3</a></code></td>
- <td align="center">+</td>
+ <td><code><a href="http://www.php.net/">mod_php3</a></code></td>
+ <td class="centered">+</td>
<td><code>mod_php3</code> runs fine, with LDAP and GD
and FreeType libraries.</td>
</tr>
<tr>
- <td align="left"><code><a href="http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html">mod_put</a></code></td>
- <td align="center">?</td>
+ <td><code><a href="http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html">mod_put</a></code></td>
+ <td class="centered">?</td>
<td>untested</td>
</tr>
<tr>
- <td align="left"><code><a href="ftp://hachiman.vidya.com/pub/apache/">mod_session</a></code></td>
- <td align="center">-</td>
+ <td><code><a href="ftp://hachiman.vidya.com/pub/apache/">mod_session</a></code></td>
+ <td class="centered">-</td>
<td>untested</td>
</tr>
</table>
<title>Apache Modules' Status</title>
- <table border="1" align="center">
+ <table border="1">
<tr>
<th>Module</th>
<th>Status</th>
</tr>
<tr>
- <td align="left"><module>core</module></td>
- <td align="center">+</td>
+ <td><module>core</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_access</module></td>
- <td align="center">+</td>
+ <td><module>mod_access</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_actions</module></td>
- <td align="center">+</td>
+ <td><module>mod_actions</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_alias</module></td>
- <td align="center">+</td>
+ <td><module>mod_alias</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_asis</module></td>
- <td align="center">+</td>
+ <td><module>mod_asis</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_auth</module></td>
- <td align="center">+</td>
+ <td><module>mod_auth</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_auth_anon</module></td>
- <td align="center">+</td>
+ <td><module>mod_auth_anon</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_auth_dbm</module></td>
- <td align="center">?</td>
+ <td><module>mod_auth_dbm</module></td>
+ <td class="centered">?</td>
<td>with own <code>libdb.a</code></td>
</tr>
<tr>
- <td align="left"><module>mod_autoindex</module></td>
- <td align="center">+</td>
+ <td><module>mod_autoindex</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_cern_meta</module></td>
- <td align="center">?</td>
+ <td><module>mod_cern_meta</module></td>
+ <td class="centered">?</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_cgi</module></td>
- <td align="center">+</td>
+ <td><module>mod_cgi</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_digest</module></td>
- <td align="center">+</td>
+ <td><module>mod_digest</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_dir</module></td>
- <td align="center">+</td>
+ <td><module>mod_dir</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_so</module></td>
- <td align="center">-</td>
+ <td><module>mod_so</module></td>
+ <td class="centered">-</td>
<td>no shared libs</td>
</tr>
<tr>
- <td align="left"><module>mod_env</module></td>
- <td align="center">+</td>
+ <td><module>mod_env</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_example</module></td>
- <td align="center">-</td>
+ <td><module>mod_example</module></td>
+ <td class="centered">-</td>
<td>(test bed only)</td>
</tr>
<tr>
- <td align="left"><module>mod_expires</module></td>
- <td align="center">+</td>
+ <td><module>mod_expires</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_headers</module></td>
- <td align="center">+</td>
+ <td><module>mod_headers</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_imap</module></td>
- <td align="center">+</td>
+ <td><module>mod_imap</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_include</module></td>
- <td align="center">+</td>
+ <td><module>mod_include</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_info</module></td>
- <td align="center">+</td>
+ <td><module>mod_info</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_log_agent</module></td>
- <td align="center">+</td>
+ <td><module>mod_log_agent</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_log_config</module></td>
- <td align="center">+</td>
+ <td><module>mod_log_config</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_log_referer</module></td>
- <td align="center">+</td>
+ <td><module>mod_log_referer</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_mime</module></td>
- <td align="center">+</td>
+ <td><module>mod_mime</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_mime_magic</module></td>
- <td align="center">?</td>
+ <td><module>mod_mime_magic</module></td>
+ <td class="centered">?</td>
<td>not ported yet</td>
</tr>
<tr>
- <td align="left"><module>mod_negotiation</module></td>
- <td align="center">+</td>
+ <td><module>mod_negotiation</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_proxy</module></td>
- <td align="center">+</td>
+ <td><module>mod_proxy</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_rewrite</module></td>
- <td align="center">+</td>
+ <td><module>mod_rewrite</module></td>
+ <td class="centered">+</td>
<td>untested</td>
</tr>
<tr>
- <td align="left"><module>mod_setenvif</module></td>
- <td align="center">+</td>
+ <td><module>mod_setenvif</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_speling</module></td>
- <td align="center">+</td>
+ <td><module>mod_speling</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_status</module></td>
- <td align="center">+</td>
+ <td><module>mod_status</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_unique_id</module></td>
- <td align="center">+</td>
+ <td><module>mod_unique_id</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_userdir</module></td>
- <td align="center">+</td>
+ <td><module>mod_userdir</module></td>
+ <td class="centered">+</td>
<td></td>
</tr>
<tr>
- <td align="left"><module>mod_usertrack</module></td>
- <td align="center">?</td>
+ <td><module>mod_usertrack</module></td>
+ <td class="centered">?</td>
<td>untested</td>
</tr>
</table>
<title>Third Party Modules' Status</title>
- <table border="1" align="center">
+ <table border="1">
<tr>
<th>Module</th>
<th>Status</th>
</tr>
<tr>
- <td align="left"><code><a
- href="http://java.apache.org/"
- >mod_jserv</a></code></td>
- <td align="center">-</td>
+ <td><code><a href="http://java.apache.org/">mod_jserv</a>
+ </code></td>
+ <td class="centered">-</td>
<td>JAVA still being ported.</td>
</tr>
<tr>
- <td align="left"><code><a href="http://www.php.net/"
- >mod_php3</a></code></td>
- <td align="center">+</td>
+ <td><code><a href="http://www.php.net/">mod_php3</a></code></td>
+ <td class="centered">+</td>
<td><code>mod_php3</code> runs fine, with LDAP and GD
and FreeType libraries.</td>
</tr>
<tr>
- <td align="left"><code><a
+ <td><code><a
href="http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html"
>mod_put</a></code></td>
- <td align="center">?</td>
+ <td class="centered">?</td>
<td>untested</td>
</tr>
<tr>
- <td align="left"><code><a
- href="ftp://hachiman.vidya.com/pub/apache/"
+ <td><code><a href="ftp://hachiman.vidya.com/pub/apache/"
>mod_session</a></code></td>
- <td align="center">-</td>
+ <td class="centered">-</td>
<td>untested</td>
</tr>
</table>
</section>
</manualpage>
-
font-weight: bold;
}
+td.centered {
+ text-align: center;
+}
+
tr.header, tr.header th {
border-top: 1px solid #000;
border-bottom: 1px solid #000;
font-weight: bold;
}
+td.centered {
+ text-align: center;
+}
+
tr.odd { /* for large tables alternating colors */
background-color: #f2f2f2;
}