<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Copyright 2004-2005 The Apache Software Foundation or its licensors, as
 applicable.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_version.xml.meta">
<name>mod_version</name>
<description>Version dependent configuration</description>
<status>Extension</status>
<sourcefile>mod_version.c</sourcefile>
<identifier>version_module</identifier>
<compatibility>Available in version 2.0.56 and later</compatibility>

<summary>
    <p>This module is designed for the use in test suites and large
    networks which have to deal with different httpd versions and
    different configurations. It provides a new container -- <directive
    type="section" module="mod_version">IfVersion</directive>, which
    allows a flexible version checking including numeric comparisons and
    regular expressions.</p>

    <example><title>Examples</title>
      &lt;IfVersion 2.1.0&gt;<br />
      <indent>
        # current httpd version is exactly 2.1.0<br />
      </indent>
      &lt;/IfVersion&gt;<br />
      <br />
      &lt;IfVersion >= 2.2&gt;<br />
      <indent>
        # use really new features :-)<br />
      </indent>
      &lt;/IfVersion&gt;
    </example>

    <p>See below for further possibilities.</p>
</summary>

<directivesynopsis type="section">
<name>IfVersion</name>
<description>contains version dependent configuration</description>
<syntax>&lt;IfVersion [[!]<var>operator</var>] <var>version</var>&gt; ...
&lt;/IfVersion&gt;</syntax>
<contextlist><context>server config</context><context>virtual host</context>
<context>directory</context><context>.htaccess</context></contextlist>
<override>All</override>

<usage>
    <p>The <directive type="section">IfVersion</directive> section encloses
    configuration directives which are executed only if the
    <program>httpd</program> version
    matches the desired criteria. For normal (numeric) comparisons the
    <var>version</var> argument has the format
    <code><var>major</var>[.<var>minor</var>[.<var>patch</var>]]</code>, e.g.
    <code>2.1.0</code> or <code>2.2</code>. <var>minor</var> and
    <var>patch</var> are optional. If these numbers are omitted, they are
    assumed to be zero. The following numerical <var>operator</var>s are
    possible:</p>

    <table style="zebra" border="1">
    <tr><th><var>operator</var></th><th>description</th></tr>
    <tr><td><code>=</code> or <code>==</code></td>
        <td>httpd version is equal</td></tr>
    <tr><td><code>&gt;</code></td>
        <td>httpd version is greater than</td></tr>
    <tr><td><code>&gt;=</code></td>
        <td>httpd version is greater or equal</td></tr>
    <tr><td><code>&lt;</code></td>
        <td>httpd version is less than</td></tr>
    <tr><td><code>&lt;=</code></td>
        <td>httpd version is less or equal</td></tr>
    </table>

    <example><title>Example</title>
      &lt;IfVersion >= 2.1&gt;<br />
      <indent>
        # this happens only in versions greater or<br />
        # equal 2.1.0.<br />
      </indent>
      &lt;/IfVersion&gt;
    </example>

    <p>Besides the numerical comparison it is possible to match a 
    <glossary ref="regex">regular expression</glossary> 
    against the httpd version. There are two ways to write it:</p>

    <table style="zebra" border="1">
    <tr><th><var>operator</var></th><th>description</th></tr>
    <tr><td><code>=</code> or <code>==</code></td>
        <td><var>version</var> has the form
            <code>/<var>regex</var>/</code></td></tr>
    <tr><td><code>~</code></td>
        <td><var>version</var> has the form
            <code><var>regex</var></code></td></tr>
    </table>

    <example><title>Example</title>
      &lt;IfVersion = /^2.1.[01234]$/&gt;<br />
      <indent>
        # e.g. workaround for buggy versions
      </indent>
      &lt;/IfVersion&gt;
    </example>

    <p>In order to reverse the meaning, all operators can be preceded by an
    exclamation mark (<code>!</code>):</p>

    <example>
      &lt;IfVersion !~ ^2.1.[01234]$&gt;<br />
      <indent>
        # not for those versions<br />
      </indent>
      &lt;/IfVersion&gt;
    </example>

    <p>If the <var>operator</var> is omitted, it is assumed to be
    <code>=</code>.</p>
</usage>
</directivesynopsis>

</modulesynopsis>
