mirror of
https://github.com/apache/httpd.git
synced 2025-06-13 16:41:33 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@97134 13f79535-47bb-0310-9956-ffa450edef68
691 lines
35 KiB
XML
691 lines
35 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
|
||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||
This file is generated from xml source: DO NOT EDIT
|
||
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||
--><title>mod_include - 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><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> > <a href="./">Modules</a></div><div id="page-content"><div id="preamble"><h1>Apache Module mod_include</h1><table class="module"><tr><th><a href="module-dict.html#Description">Description:
|
||
</a></th><td>Server-parsed html documents (Server Side Includes)</td></tr><tr><th><a href="module-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:
|
||
</a></th><td>include_module</td></tr><tr><th><a href="module-dict.html#SourceFile">Source File:
|
||
</a></th><td>mod_include.c</td></tr></table><h3>Summary</h3>
|
||
|
||
<p>This module provides a filter which will process files
|
||
before they are sent to the client. The processing is
|
||
controlled by specially formated SGML comments, referred to as
|
||
<em>elements</em>. These elements allow conditional text, the
|
||
inclusion of other files or programs, as well as the setting and
|
||
printing of environment variables.</p>
|
||
|
||
</div><div id="quickview"><h3 class="directives">Directives</h3><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#ssiendtag">SSIEndTag</a></li>
|
||
<li><img alt="" src="../images/down.gif" /> <a href="#ssierrormsg">SSIErrorMsg</a></li>
|
||
<li><img alt="" src="../images/down.gif" /> <a href="#ssistarttag">SSIStartTag</a></li>
|
||
<li><img alt="" src="../images/down.gif" /> <a href="#ssitimeformat">SSITimeFormat</a></li>
|
||
<li><img alt="" src="../images/down.gif" /> <a href="#ssiundefinedecho">SSIUndefinedEcho</a></li>
|
||
<li><img alt="" src="../images/down.gif" /> <a href="#xbithack">XBitHack</a></li>
|
||
</ul><h3>Topics</h3><ul id="topics"><li><img alt="" src="../images/down.gif" /> <a href="#enabling">Enabling Server-Side Includes</a></li><li><img alt="" src="../images/down.gif" /> <a href="#basic">Basic Elements</a></li><li><img alt="" src="../images/down.gif" /> <a href="#includevars">Include Variables</a></li><li><img alt="" src="../images/down.gif" /> Variable Substitution</li><li><img alt="" src="../images/down.gif" /> <a href="#flowctrl">Flow Control Elements</a></li><li><img alt="" src="../images/down.gif" /> Using Server Side Includes for ErrorDocuments</li><li><img alt="" src="../images/down.gif" /> PATH_INFO with Server Side Includes</li></ul><h3>See also</h3><ul class="seealso"><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li><li><code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="enabling" id="enabling">Enabling Server-Side Includes</a></h2>
|
||
|
||
|
||
<p>Server Side Includes are implemented by the
|
||
<code>INCLUDES</code> <a href="../filter.html">filter</a>. If
|
||
documents containing server-side include directives are given
|
||
the extension .shtml, the following directives will make Apache
|
||
parse them and assign the resulting document the mime type of
|
||
<code>text/html</code>:</p>
|
||
|
||
<div class="example"><p><code>
|
||
AddType text/html .shtml<br />
|
||
AddOutputFilter INCLUDES .shtml
|
||
</code></p></div>
|
||
|
||
<p>The following directive must be given for the directories
|
||
containing the shtml files (typically in a
|
||
<code><Directory></code> section, but this directive is
|
||
also valid in .htaccess files if <code>AllowOverride
|
||
Options</code> is set):</p>
|
||
|
||
<div class="example"><p><code>
|
||
Options +Includes
|
||
</code></p></div>
|
||
|
||
<p>For backwards compatibility, the <code>server-parsed</code>
|
||
<a href="../handler.html">handler</a> also activates the
|
||
INCLUDES filter. As well, Apache will activate the INCLUDES
|
||
filter for any document with mime type
|
||
<code>text/x-server-parsed-html</code> or
|
||
<code>text/x-server-parsed-html3</code> (and the resulting
|
||
output will have the mime type <code>text/html</code>).</p>
|
||
|
||
<p>For more information, see our <a href="../howto/ssi.html">Tutorial on Server Side
|
||
Includes</a>.</p>
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="basic" id="basic">Basic Elements</a></h2>
|
||
|
||
<p>The document is parsed as an HTML document, with special
|
||
commands embedded as SGML comments. A command has the syntax: </p>
|
||
|
||
<div class="example"><p><code>
|
||
<code><!--#</code><em>element attribute=value
|
||
attribute=value ...</em> <code>--></code>
|
||
</code></p></div>
|
||
|
||
<p>The value will often be enclosed in double quotes; many
|
||
commands only allow a single attribute-value pair. Note that
|
||
the comment terminator (<code>--></code>) should be preceded
|
||
by whitespace to ensure that it isn't considered part of an SSI
|
||
token. </p>
|
||
|
||
<p>The allowed elements are:</p>
|
||
|
||
<dl>
|
||
<dt><strong>config</strong></dt>
|
||
|
||
<dd>
|
||
<p>This command controls various aspects of the parsing. The
|
||
valid attributes are:</p>
|
||
|
||
<dl>
|
||
<dt><strong>errmsg</strong></dt>
|
||
|
||
<dd>The value is a message that is sent back to the
|
||
client if an error occurs whilst parsing the
|
||
document.</dd>
|
||
|
||
<dt><strong>sizefmt</strong></dt>
|
||
|
||
<dd>The value sets the format to be used which displaying
|
||
the size of a file. Valid values are <code>bytes</code>
|
||
for a count in bytes, or <code>abbrev</code> for a count
|
||
in Kb or Mb as appropriate.</dd>
|
||
|
||
<dt><strong>timefmt</strong></dt>
|
||
|
||
<dd>The value is a string to be used by the
|
||
<code>strftime(3)</code> library routine when printing
|
||
dates.</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><strong><a name="echo">echo</a></strong></dt>
|
||
|
||
<dd>
|
||
<p>This command prints one of the <a href="#includevars">include
|
||
variables</a>, defined below. If the variable is unset, it
|
||
is printed as <code>(none)</code>. Any dates printed are
|
||
subject to the currently configured <code>timefmt</code>.</p>
|
||
|
||
<p>Attributes:</p>
|
||
|
||
<dl>
|
||
<dt><strong>var</strong></dt>
|
||
|
||
<dd>The value is the name of the variable to print.</dd>
|
||
|
||
<dt><strong>encoding</strong></dt>
|
||
|
||
<dd>Specifies how Apache should encode special characters
|
||
contained in the variable before outputting them. If set
|
||
to "none", no encoding will be done. If set to "url",
|
||
then URL encoding (also known as %-encoding; this is
|
||
appropriate for use within URLs in links, etc.) will be
|
||
performed. At the start of an <code>echo</code> element,
|
||
the default is set to "entity", resulting in entity
|
||
encoding (which is appropriate in the context of a
|
||
block-level HTML element, eg. a paragraph of text). This
|
||
can be changed by adding an <code>encoding</code>
|
||
attribute, which will remain in effect until the next
|
||
<code>encoding</code> attribute is encountered or the
|
||
element ends, whichever comes first. Note that the
|
||
<code>encoding</code> attribute must <em>precede</em> the
|
||
corresponding <code>var</code> attribute to be effective,
|
||
and that only special characters as defined in the
|
||
ISO-8859-1 character encoding will be encoded. This
|
||
encoding process may not have the desired result if a
|
||
different character encoding is in use. Apache 1.3.12 and
|
||
above; previous versions do no encoding.</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><strong>exec</strong></dt>
|
||
|
||
<dd>
|
||
<p>The exec command executes a given shell command or CGI
|
||
script. It requires <code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code> to be present
|
||
in the server. The IncludesNOEXEC <code class="directive"><a href="../mod/core.html#option">Option</a></code> disables this command
|
||
completely. The valid attributes are: </p>
|
||
|
||
<dl>
|
||
<dt><strong>cgi</strong></dt>
|
||
|
||
<dd>
|
||
<p>The value specifies a (%-encoded) URL-path to
|
||
the CGI script. If the path does not begin with a slash (/),
|
||
then it is taken to be relative to the current
|
||
document. The document referenced by this path is
|
||
invoked as a CGI script, even if the server would not
|
||
normally recognize it as such. However, the directory
|
||
containing the script must be enabled for CGI scripts
|
||
(with <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>
|
||
or the ExecCGI <code class="directive"><a href="../mod/core.html#option">Option</a></code>).</p>
|
||
|
||
<p>The CGI script is given the PATH_INFO and query
|
||
string (QUERY_STRING) of the original request from the
|
||
client; these cannot be specified in the URL path. The
|
||
include variables will be available to the script in
|
||
addition to the standard <a href="mod_cgi.html">CGI</a>
|
||
environment.</p>
|
||
|
||
<p>For example:</p>
|
||
|
||
<div class="example"><p><code><!--#exec cgi="/cgi-bin/example.cgi" --></code></p></div>
|
||
|
||
<p>If the script returns a Location: header instead of
|
||
output, then this will be translated into an HTML
|
||
anchor.</p>
|
||
|
||
<p>The <code><a href="#includevirtual">include
|
||
virtual</a></code> element should be
|
||
used in preference to <code>exec cgi</code>. In particular,
|
||
if you need to pass additional arguments to a CGI program,
|
||
using the query string, this cannot be done with <code>exec
|
||
cgi</code>, but can be done with <code>include
|
||
virtual</code>, as shown here:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
|
||
</code></p></div>
|
||
|
||
</dd>
|
||
|
||
<dt><strong>cmd</strong></dt>
|
||
|
||
<dd>
|
||
<p>The server will execute the given string using
|
||
<code>/bin/sh</code>. The <a href="#includevars">include variables</a> are available
|
||
to the command, in addition to the usual set of CGI
|
||
variables.</p>
|
||
|
||
<p>The use of <code><a href="#includevirtual">#include
|
||
virtual</a></code> is almost always
|
||
prefered to using either <code>#exec cgi</code> or <code>#exec
|
||
cmd</code>. The former (<code>#include virtual</code>) uses the
|
||
standard Apache sub-request mechanism to include files or
|
||
scripts. It is much better tested and maintained.</p>
|
||
|
||
<p>In addition, on some platforms, like Win32, and on unix
|
||
when using suexec, you cannot pass arguments to a command in
|
||
an <code>exec</code> directive, or otherwise include spaces in
|
||
the command. Thus, while the following will work under a
|
||
non-suexec configuration on unix, it will not produce the
|
||
desired result under Win32, or when running suexec:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#exec cmd="perl /path/to/perlscript arg1 arg2" -->
|
||
</code></p></div>
|
||
|
||
</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><strong>fsize</strong></dt>
|
||
|
||
<dd>
|
||
<p>This command prints the size of the specified file, subject
|
||
to the <code>sizefmt</code> format specification.
|
||
Attributes:</p>
|
||
|
||
<dl>
|
||
<dt><strong>file</strong></dt>
|
||
|
||
<dd>The value is a path relative to the directory
|
||
containing the current document being parsed.</dd>
|
||
|
||
<dt><strong>virtual</strong></dt>
|
||
|
||
<dd>The value is a (%-encoded) URL-path. If it does not begin with
|
||
a slash (/) then it is taken to be relative to the
|
||
current document.</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><strong>flastmod</strong></dt>
|
||
|
||
<dd>This command prints the last modification date of the
|
||
specified file, subject to the <code>timefmt</code> format
|
||
specification. The attributes are the same as for the
|
||
<code>fsize</code> command.</dd>
|
||
|
||
<dt><strong>include</strong></dt>
|
||
|
||
<dd>
|
||
<p>This command inserts the text of another document or file
|
||
into the parsed file. Any included file is subject to the
|
||
usual access control. If the directory containing the
|
||
parsed file has the <a href="core.html#options">Option</a>
|
||
IncludesNOEXEC set, and the including the document would
|
||
cause a program to be executed, then it will not be
|
||
included; this prevents the execution of CGI scripts.
|
||
Otherwise CGI scripts are invoked as normal using the
|
||
complete URL given in the command, including any query
|
||
string. </p>
|
||
|
||
<p>An attribute defines the location of the document; the
|
||
inclusion is done for each attribute given to the include
|
||
command. The valid attributes are:</p>
|
||
|
||
<dl>
|
||
<dt><strong>file</strong></dt>
|
||
|
||
<dd>The value is a path relative to the directory
|
||
containing the current document being parsed. It cannot
|
||
contain <code>../</code>, nor can it be an absolute path.
|
||
Therefore, you cannot include files that are outside of the
|
||
document root, or above the current document in the directory
|
||
structure.
|
||
The <code>virtual</code> attribute should always be used
|
||
in preference to this one.</dd>
|
||
|
||
<dt><strong><a name="includevirtual">virtual</a></strong></dt>
|
||
|
||
<dd>
|
||
<p>The value is a (%-encoded) URL-path. The URL cannot contain a
|
||
scheme or hostname, only a path and an optional query
|
||
string. If it does not begin with a slash (/) then it is
|
||
taken to be relative to the current document.</p>
|
||
|
||
<p>A URL is constructed from the attribute, and the output the
|
||
server would return if the URL were accessed by the client
|
||
is included in the parsed output. Thus included files can
|
||
be nested.</p>
|
||
|
||
<p>If the specified URL is a CGI program, the program will
|
||
be executed and its output inserted in place of the directive
|
||
in the parsed file. You may include a query string in a CGI
|
||
url:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#include virtual="/cgi-bin/example.cgi?argument=value" -->
|
||
</code></p></div>
|
||
|
||
<p><code>include virtual</code> should be used in preference
|
||
to <code>exec cgi</code> to include the output of CGI
|
||
programs into an HTML document.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd>
|
||
|
||
<dt><strong>printenv</strong></dt>
|
||
|
||
<dd>
|
||
<p>This prints out a listing of all existing variables and
|
||
their values. Starting with Apache 1.3.12, special characters
|
||
are entity encoded (see the <a href="#echo"><code>echo</code></a> element for details)
|
||
before being output. There are no attributes.</p>
|
||
|
||
<p>For example:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#printenv -->
|
||
</code></p></div>
|
||
|
||
<p>The <strong>printenv</strong> element is available only in
|
||
Apache 1.2 and above.</p>
|
||
</dd>
|
||
<dt><strong>set</strong></dt>
|
||
|
||
<dd>
|
||
This sets the value of a variable. Attributes:
|
||
|
||
<dl>
|
||
<dt><strong>var</strong></dt>
|
||
|
||
<dd>The name of the variable to set.</dd>
|
||
|
||
<dt><strong>value</strong></dt>
|
||
|
||
<dd>The value to give a variable.</dd>
|
||
</dl>
|
||
<p>For example:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#set var="category" value="help" -->
|
||
</code></p></div>
|
||
|
||
<p>The <strong>set</strong> element is available only in
|
||
Apache 1.2 and above.</p>
|
||
</dd>
|
||
</dl>
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="includevars" id="includevars">Include Variables</a></h2>
|
||
|
||
|
||
<p>In addition to the variables in the standard CGI environment,
|
||
these are available for the <code>echo</code> command, for
|
||
<code>if</code> and <code>elif</code>, and to any program
|
||
invoked by the document.</p>
|
||
|
||
<dl>
|
||
<dt>DATE_GMT</dt>
|
||
|
||
<dd>The current date in Greenwich Mean Time.</dd>
|
||
|
||
<dt>DATE_LOCAL</dt>
|
||
|
||
<dd>The current date in the local time zone.</dd>
|
||
|
||
<dt>DOCUMENT_NAME</dt>
|
||
|
||
<dd>The filename (excluding directories) of the document
|
||
requested by the user.</dd>
|
||
|
||
<dt>DOCUMENT_URI</dt>
|
||
|
||
<dd>The (%-decoded) URL path of the document requested by the
|
||
user. Note that in the case of nested include files, this is
|
||
<em>not</em> the URL for the current document.</dd>
|
||
|
||
<dt>LAST_MODIFIED</dt>
|
||
|
||
<dd>The last modification date of the document requested by
|
||
the user.</dd>
|
||
</dl>
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2>Variable Substitution</h2>
|
||
|
||
|
||
<p>Variable substitution is done within quoted strings in most
|
||
cases where they may reasonably occur as an argument to an SSI
|
||
directive. This includes the <code>config</code>,
|
||
<code>exec</code>, <code>flastmod</code>, <code>fsize</code>,
|
||
<code>include</code>, <code>echo</code>, and <code>set</code>
|
||
directives, as well
|
||
as the arguments to conditional operators. You can insert a
|
||
literal dollar sign into the string using backslash
|
||
quoting:</p>
|
||
<div class="example"><p><code>
|
||
<!--#if expr="$a = \$test" -->
|
||
</code></p></div>
|
||
|
||
<p>If a variable reference needs to be substituted in the
|
||
middle of a character sequence that might otherwise be
|
||
considered a valid identifier in its own right, it can be
|
||
disambiguated by enclosing the reference in braces,
|
||
<em>a la</em> shell substitution:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" -->
|
||
</code></p></div>
|
||
|
||
<p>This will result in the <code>Zed</code> variable being set
|
||
to "<code>X_Y</code>" if <code>REMOTE_HOST</code> is
|
||
"<code>X</code>" and <code>REQUEST_METHOD</code> is
|
||
"<code>Y</code>".</p>
|
||
|
||
<p>EXAMPLE: the below example will print "in foo" if the
|
||
DOCUMENT_URI is /foo/file.html, "in bar" if it is
|
||
/bar/file.html and "in neither" otherwise:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" --><br />
|
||
in foo<br />
|
||
<!--#elif expr="\"$DOCUMENT_URI\" = \"/bar/file.html\"" --><br />
|
||
in bar<br />
|
||
<!--#else --><br />
|
||
in neither<br />
|
||
<!--#endif -->
|
||
</code></p></div>
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2><a name="flowctrl" id="flowctrl">Flow Control Elements</a></h2>
|
||
|
||
|
||
<p>These are available in Apache 1.2 and above. The basic flow
|
||
control elements are:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#if expr="<em>test_condition</em>" --><br />
|
||
<!--#elif expr="<em>test_condition</em>" --><br />
|
||
<!--#else --><br />
|
||
<!--#endif -->
|
||
</code></p></div>
|
||
|
||
<p>The <strong><code>if</code></strong> element works like an
|
||
if statement in a programming language. The test condition is
|
||
evaluated and if the result is true, then the text until the
|
||
next <strong><code>elif</code></strong>,
|
||
<strong><code>else</code></strong>. or
|
||
<strong><code>endif</code></strong> element is included in the
|
||
output stream.</p>
|
||
|
||
<p>The <strong><code>elif</code></strong> or
|
||
<strong><code>else</code></strong> statements are be used the
|
||
put text into the output stream if the original test_condition
|
||
was false. These elements are optional.</p>
|
||
|
||
<p>The <strong><code>endif</code></strong> element ends the
|
||
<strong><code>if</code></strong> element and is required.</p>
|
||
|
||
<p><em>test_condition</em> is one of the following:</p>
|
||
|
||
<dl>
|
||
<dt><em>string</em></dt>
|
||
|
||
<dd>true if <em>string</em> is not empty</dd>
|
||
|
||
<dt><em>string1</em> = <em>string2</em><br />
|
||
<em>string1</em> != <em>string2</em><br />
|
||
<em>string1</em> < <em>string2</em><br />
|
||
<em>string1</em> <= <em>string2</em><br />
|
||
<em>string1</em> > <em>string2</em><br />
|
||
<em>string1</em> >= <em>string2</em></dt>
|
||
|
||
<dd>Compare string1 with string 2. If string2 has the form
|
||
<em>/string/</em> then it is compared as a regular
|
||
expression. Regular expressions have the same syntax as those
|
||
found in the Unix <code>egrep</code> command.</dd>
|
||
|
||
<dt>( <em>test_condition</em> )</dt>
|
||
|
||
<dd>true if <em>test_condition</em> is true</dd>
|
||
|
||
<dt>! <em>test_condition</em></dt>
|
||
|
||
<dd>true if <em>test_condition</em> is false</dd>
|
||
|
||
<dt><em>test_condition1</em> &&
|
||
<em>test_condition2</em></dt>
|
||
|
||
<dd>true if both <em>test_condition1</em> and
|
||
<em>test_condition2</em> are true</dd>
|
||
|
||
<dt><em>test_condition1</em> || <em>test_condition2</em></dt>
|
||
|
||
<dd>true if either <em>test_condition1</em> or
|
||
<em>test_condition2</em> is true</dd>
|
||
</dl>
|
||
|
||
<p>"<em>=</em>" and "<em>!=</em>" bind more tightly than
|
||
"<em>&&</em>" and "<em>||</em>". "<em>!</em>" binds
|
||
most tightly. Thus, the following are equivalent:</p>
|
||
|
||
<div class="example"><p><code>
|
||
<!--#if expr="$a = test1 && $b = test2" --><br />
|
||
<!--#if expr="($a = test1) && ($b = test2)" -->
|
||
</code></p></div>
|
||
|
||
<p>Anything that's not recognized as a variable or an operator
|
||
is treated as a string. Strings can also be quoted:
|
||
<em>'string'</em>. Unquoted strings can't contain whitespace
|
||
(blanks and tabs) because it is used to separate tokens such as
|
||
variables. If multiple strings are found in a row, they are
|
||
concatenated using blanks. So,</p>
|
||
|
||
<div class="example"><pre><em>string1 string2</em> results in <em>string1 string2</em></pre><pre><em>'string1 string2'</em> results in <em>string1 string2</em></pre></div>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2>Using Server Side Includes for ErrorDocuments</h2>
|
||
|
||
|
||
<p>There is <a href="../misc/custom_errordocs.html">a document</a>
|
||
which describes how to use the features of mod_include to offer
|
||
internationalized customized server error documents.</p>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="section"><h2>PATH_INFO with Server Side Includes</h2>
|
||
|
||
<p>Files processed for server-side includes no longer accept
|
||
requests with PATH_INFO (trailing pathname information) by
|
||
default. You can use the <code class="directive"><a href="../mod/core.html#acceptpathinfo">AcceptPathInfo</a></code> directive to
|
||
configure the server to accept requests with PATH_INFO.</p>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="SSIEndTag" id="SSIEndTag">SSIEndTag</a> <a name="ssiendtag" id="ssiendtag">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>String that ends an include element</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>SSIEndTag <em>tag</em></code></td></tr><tr><th><a href="directive-dict.html#Default">Default:
|
||
</a></th><td><code>SSIEndTag "-->"</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_include</td></tr><tr><th><a href="directive-dict.html#Compatibility">Compatibility:
|
||
</a></th><td>Available in version 2.0.30 and later.
|
||
</td></tr></table>
|
||
<p>This directive changes the string that mod_include looks for
|
||
to mark the end of an include element.</p>
|
||
|
||
<div class="example"><h3>Example</h3><p><code>
|
||
|
||
SSIEndTag "%>"
|
||
</code></p></div>
|
||
|
||
<h3>See also</h3><ul><li><code class="directive"><a href="#ssistarttag">SSIStartTag</a></code></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="SSIErrorMsg" id="SSIErrorMsg">SSIErrorMsg</a> <a name="ssierrormsg" id="ssierrormsg">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>Error message displayed when there is an SSI error</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>SSIErrorMsg <em>message</em></code></td></tr><tr><th><a href="directive-dict.html#Default">Default:
|
||
</a></th><td><code>SSIErrorMsg
|
||
"[an error occurred while processing this directive]"</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host, directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
|
||
</a></th><td>All</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_include</td></tr><tr><th><a href="directive-dict.html#Compatibility">Compatibility:
|
||
</a></th><td>Available in version 2.0.30 and later.</td></tr></table>
|
||
<p>The SSIErrorMsg directive changes the error message displayed
|
||
when mod_include encounters an error. For production servers you
|
||
may consider changing the default error message to
|
||
<code>"<!-- Error -->"</code> so that the message
|
||
is not presented to the user.
|
||
</p>
|
||
<p>This directive has the same effect as the <code><!--#config
|
||
errmsg=<em>message</em> --></code> element.</p>
|
||
|
||
<div class="example"><h3>Example</h3><p><code>
|
||
|
||
SSIErrorMsg "<!-- Error -->"
|
||
</code></p></div>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="SSIStartTag" id="SSIStartTag">SSIStartTag</a> <a name="ssistarttag" id="ssistarttag">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>String that starts an include element</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>SSIStartTag <em>tag</em></code></td></tr><tr><th><a href="directive-dict.html#Default">Default:
|
||
</a></th><td><code>SSIStartTag "<!--"</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_include</td></tr><tr><th><a href="directive-dict.html#Compatibility">Compatibility:
|
||
</a></th><td>Available in version 2.0.30 and later.</td></tr></table>
|
||
|
||
<p>This directive changes the string that mod_include looks for
|
||
to mark an include element to process.</p>
|
||
|
||
<p>You may want to use this option if you have 2 servers parsing the
|
||
output of a file each processing different commands (possibly at
|
||
different times).</p>
|
||
|
||
<div class="example"><h3>Example</h3><p><code>
|
||
|
||
SSIStartTag "<%"
|
||
</code></p></div>
|
||
|
||
<p>The example given above, in conjunction with a matching
|
||
<code class="directive"><a href="#ssiendtag">SSIEndTag</a></code>, will
|
||
allow you to use SSI directives as shown in the example
|
||
below:</p>
|
||
|
||
<div class="example"><h3>SSI directives with alternate start and end tags</h3><p><code>
|
||
|
||
<%#printenv %>
|
||
</code></p></div>
|
||
|
||
<h3>See also</h3><ul><li><code class="directive"><a href="#ssiendtag">SSIEndTag</a></code></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="SSITimeFormat" id="SSITimeFormat">SSITimeFormat</a> <a name="ssitimeformat" id="ssitimeformat">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>Configures the format in which date strings are
|
||
displayed</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>SSITimeFormat <em>formatstring</em></code></td></tr><tr><th><a href="directive-dict.html#Default">Default:
|
||
</a></th><td><code>SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host, directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
|
||
</a></th><td>All</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_include</td></tr><tr><th><a href="directive-dict.html#Compatibility">Compatibility:
|
||
</a></th><td>Available in version 2.0.30 and later.</td></tr></table>
|
||
<p>This directive changes the format in which date strings are displayed
|
||
when echoing DATE environment variables. The <em>formatstring</em>
|
||
is as in strftime(3) from the C standard library.</p>
|
||
|
||
<p>This directive has the same effect as the <code><!--#config
|
||
timefmt=<em>formatstring</em> --></code> element.</p>
|
||
|
||
<div class="example"><h3>Example</h3><p><code>
|
||
|
||
SSITimeFormat "%R, %B %d, %Y"
|
||
</code></p></div>
|
||
|
||
<p>The above directive would cause times to be displayed in the
|
||
format "22:26, June 14, 2002".</p>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="SSIUndefinedEcho" id="SSIUndefinedEcho">SSIUndefinedEcho</a> <a name="ssiundefinedecho" id="ssiundefinedecho">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>String displayed when
|
||
an unset variable is echoed</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>SSIUndefinedEcho <em>tag</em></code></td></tr><tr><th><a href="directive-dict.html#Default">Default:
|
||
</a></th><td><code>SSIUndefinedEcho "<!-- undef -->"</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_include</td></tr><tr><th><a href="directive-dict.html#Compatibility">Compatibility:
|
||
</a></th><td>Available in version 2.0.34 and later.
|
||
</td></tr></table>
|
||
<p>This directive changes the string that mod_include displays
|
||
when a variable is not set and "echoed".</p>
|
||
|
||
<div class="example"><h3>Example</h3><p><code>
|
||
|
||
SSIUndefinedEcho "[ No Value ]"
|
||
</code></p></div>
|
||
|
||
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div><div class="directive-section"><h2><a name="XBitHack" id="XBitHack">XBitHack</a> <a name="xbithack" id="xbithack">Directive</a></h2><table class="directive"><tr><th><a href="directive-dict.html#Description">Description:
|
||
</a></th><td>Parse SSI directives in files with the execute
|
||
bit set</td></tr><tr><th><a href="directive-dict.html#Syntax">Syntax:
|
||
</a></th><td><code>XBitHack on|off|full</code></td></tr><tr><th><a href="directive-dict.html#Default">Default:
|
||
</a></th><td><code>XBitHack off</code></td></tr><tr><th><a href="directive-dict.html#Context">Context:
|
||
</a></th><td>server config, virtual host, directory, .htaccess</td></tr><tr><th><a href="directive-dict.html#Override">Override:
|
||
</a></th><td>Options</td></tr><tr><th><a href="directive-dict.html#Status">Status:
|
||
</a></th><td>Base</td></tr><tr><th><a href="directive-dict.html#Module">Module:
|
||
</a></th><td>mod_include</td></tr></table>
|
||
<p>The XBitHack directives controls the parsing of ordinary
|
||
html documents. This directive only affects files associated
|
||
with the MIME type <code>text/html</code>. XBitHack can take on
|
||
the following values:</p>
|
||
|
||
<dl>
|
||
<dt>off</dt>
|
||
|
||
<dd>No special treatment of executable files.</dd>
|
||
|
||
<dt>on</dt>
|
||
|
||
<dd>Any text/html file that has the user-execute bit set will
|
||
be treated as a server-parsed html document.</dd>
|
||
|
||
<dt>full</dt>
|
||
|
||
<dd>
|
||
As for <code>on</code> but also test the group-execute bit.
|
||
If it is set, then set the Last-modified date of the
|
||
returned file to be the last modified time of the file. If
|
||
it is not set, then no last-modified date is sent. Setting
|
||
this bit allows clients and proxies to cache the result of
|
||
the request.
|
||
|
||
<div class="note"><strong>Note:</strong> you would not want to use the full
|
||
option, unless you assure the group-execute bit is unset for
|
||
every SSI script which might <code>#include</code> a CGI
|
||
or otherwise produces different output on each hit (or could
|
||
potentially change on subsequent requests).</div>
|
||
</dd>
|
||
</dl>
|
||
|
||
</div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><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></div></body></html> |