| <?xml version="1.0"?> | |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> | |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> | |
| <!-- $LastChangedRevision$ --> | |
| <!-- | |
| Licensed to the Apache Software Foundation (ASF) under one or more | |
| contributor license agreements. See the NOTICE file distributed with | |
| this work for additional information regarding copyright ownership. | |
| The ASF licenses this file to You 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> | |
| <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> | |
| <highlight language="config"> | |
| <IfVersion 2.4.2> | |
| # current httpd version is exactly 2.4.2 | |
| </IfVersion> | |
| <IfVersion >= 2.5> | |
| # use really new features :-) | |
| </IfVersion> | |
| </highlight> | |
| </example> | |
| <p>See below for further possibilities.</p> | |
| </summary> | |
| <directivesynopsis type="section"> | |
| <name>IfVersion</name> | |
| <description>contains version dependent configuration</description> | |
| <syntax><IfVersion [[!]<var>operator</var>] <var>version</var>> ... | |
| </IfVersion></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>></code></td> | |
| <td>httpd version is greater than</td></tr> | |
| <tr><td><code>>=</code></td> | |
| <td>httpd version is greater or equal</td></tr> | |
| <tr><td><code><</code></td> | |
| <td>httpd version is less than</td></tr> | |
| <tr><td><code><=</code></td> | |
| <td>httpd version is less or equal</td></tr> | |
| </table> | |
| <example><title>Example</title> | |
| <highlight language="config"> | |
| <IfVersion >= 2.3> | |
| # this happens only in versions greater or | |
| # equal 2.3.0. | |
| </IfVersion> | |
| </highlight> | |
| </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> | |
| <highlight language="config"> | |
| <IfVersion = /^2.4.[01234]$/> | |
| # e.g. workaround for buggy versions | |
| </IfVersion> | |
| </highlight> | |
| </example> | |
| <p>In order to reverse the meaning, all operators can be preceded by an | |
| exclamation mark (<code>!</code>):</p> | |
| <highlight language="config"> | |
| <IfVersion !~ ^2.4.[01234]$> | |
| # not for those versions | |
| </IfVersion> | |
| </highlight> | |
| <p>If the <var>operator</var> is omitted, it is assumed to be | |
| <code>=</code>.</p> | |
| </usage> | |
| </directivesynopsis> | |
| </modulesynopsis> |