mod_access.html revision d2b2fc4caf5c8a9c05d3090269f10a54201ce7c4
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai<html xmlns="http://www.w3.org/1999/xhtml">
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <head>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <meta name="generator" content="HTML Tidy, see www.w3.org" />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <title>Apache module mod_access</title>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai </head>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai vlink="#000080" alink="#FF0000">
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <!--#include virtual="header.html" -->
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <h1 align="CENTER">Module mod_access</h1>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <p>This module provides access control based on client
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai hostname, IP address, or other characteristics of the client
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai request.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p><a href="module-dict.html#Status"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Status:</strong></a> Base<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="module-dict.html#SourceFile"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Source File:</strong></a> mod_access.c<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="module-dict.html#ModuleIdentifier"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Module Identifier:</strong></a>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai access_module</p>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <h2>Summary</h2>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <p>The directives provided by mod_access are used in <code><a
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai href="core.html#directory">&lt;Directory&gt;</a>, <a
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai href="core.html#files">&lt;Files&gt;</a>,</code> and <code><a
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai href="core.html#location">&lt;Location&gt;</a></code> sections
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai as well as <code><a
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai href="core.html#accessfilename">.htaccess</a></code> files to
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai control access to particular parts of the server. Access can be
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai controlled based on the client hostname, IP address, or other
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai characteristics of the client request, as captured in <a
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai href="/env.html">environment variables</a>. The
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>Allow</code> and <code>Deny</code> directives are used to
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai specify which clients are or are not allowed access to the
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai server, while the <code>Order</code> directive sets the default
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai access state, and configures how the <code>Allow</code> and
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>Deny</code> directives interact with each other.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>Both host-based access restrictions and password-based
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai authentication may be implemented simultaneously. In that case,
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai the <a href="core.html#satsify">Satisfy</a> directive is used
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai to determine how the two sets of restrictions interact.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>In general, access restriction directives apply to all
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai access methods (<code>GET</code>, <code>PUT</code>,
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>POST</code>, etc). This is the desired behavior in most
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai cases. However, it is possible to restrict some methods, while
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai leaving other methods unrestricted, by enclosing the directives
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai in a <a href="core.html#limit">&lt;Limit&gt;</a> section.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <h2>Directives</h2>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <ul>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <li><a href="#allow">Allow</a></li>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <li><a href="#deny">Deny</a></li>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <li><a href="#order">Order</a></li>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai </ul>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>See also <a href="core.html#satisfy">Satisfy</a> and <a
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai href="core.html#require">Require</a>.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <hr />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <h2><a id="allow" name="allow">Allow</a> <a id="allowfromenv"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai name="allowfromenv">directive</a></h2>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p><!--%plaintext &lt;?INDEX {\tt Allow} directive&gt; -->
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Syntax"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Syntax:</strong></a> Allow from
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai all|<em>host</em>|env=<em>env-variable</em>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai [<em>host</em>|env=<em>env-variable</em>] ...<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="directive-dict.html#Context"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Context:</strong></a> directory,
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai .htaccess<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="directive-dict.html#Override"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Override:</strong></a> Limit<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="directive-dict.html#Status"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Status:</strong></a> Base<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="directive-dict.html#Module"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Module:</strong></a> mod_access</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>The <code>Allow</code> directive affects which hosts can
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai access an area of the server. Access can be controlled by
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai hostname, IP Address, IP Address range, or by other
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai characteristics of the client request captured in environment
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai variables.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>The first argument to this directive is always
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>from</code>. The subsequent arguments can take three
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai different forms. If <code>Allow from all</code> is specified,
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai then all hosts are allowed access, subject to the configuration
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai of the <code>Deny</code> and <code>Order</code> directives as
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai discussed below. To allow only particular hosts or groups of
0e8e408d4c403319217b987af64a10b134a6e4a4Satyen Desai hosts to access the server, the <em>host</em> can be specified
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai in any of the following formats:</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <dl>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <dt>A (partial) domain-name</dt>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>Example: <code>Allow from apache.org</code><br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai Hosts whose names match, or end in, this string are allowed
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai access. Only complete components are matched, so the above
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai example will match <code>foo.apache.org</code> but it will
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai not match <code>fooapache.org</code>. This configuration will
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai cause the server to perform a reverse DNS lookup on the
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai client IP address, regardless of the setting of the <a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai href="core.html#hostnamelookups">HostnameLookups</a>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai directive.</dd>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <dt>A full IP address</dt>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>Example: <code>Allow from 10.1.2.3</code><br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai An IP address of a host allowed access</dd>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dt>A partial IP address</dt>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>Example: <code>Allow from 10.1</code><br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai The first 1 to 3 bytes of an IP address, for subnet
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai restriction.</dd>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dt>A network/netmask pair</dt>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>Example: <code>Allow from
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai 10.1.0.0/255.255.0.0</code><br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai A network a.b.c.d, and a netmask w.x.y.z. For more
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai fine-grained subnet restriction.</dd>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dt>A network/nnn CIDR specification</dt>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>Example: <code>Allow from 10.1.0.0/16</code><br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Similar to the previous case, except the netmask consists of
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai nnn high-order 1 bits.</dd>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </dl>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>Note that the last three examples above match exactly the
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai same set of hosts.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>IPv6 addresses and IPv6 subnets can be specified as shown
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai below:</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <pre>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai Allow from fe80::a00:20ff:fea7:ccea
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai Allow from fe80::a00:20ff:fea7:ccea/10
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai </pre>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>The third format of the arguments to the <code>Allow</code>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai directive allows access to the server to be controlled based on
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai the existence of an <a href="/env.html">environment
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai variable</a>. When <code>Allow from
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai env=</code><em>env-variable</em> is specified, then the request
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai is allowed access if the environment variable
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <em>env-variable</em> exists. The server provides the ability
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai to set environment variables in a flexible way based on
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai characteristics of the client request using the directives
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai provided by <a href="mod_setenvif.html">mod_setenvif</a>.
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Therefore, this directive can be used to allow access based on
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai such factors as the clients <code>User-Agent</code> (browser
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai type), <code>Referer</code>, or other HTTP request header
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai fields.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <p>Example:</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <blockquote>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai<pre>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen DesaiSetEnvIf User-Agent ^KnockKnock/2.0 let_me_in
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai&lt;Directory /docroot&gt;
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai Order Deny,Allow
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai Deny from all
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Allow from env=let_me_in
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai&lt;/Directory&gt;
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai</pre>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </blockquote>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <p>In this case, browsers with a user-agent string beginning
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai with <tt>KnockKnock/2.0</tt> will be allowed access, and all
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai others will be denied.</p>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <p>See also <a href="#deny">Deny</a>, <a
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai href="#order">Order</a> and <a
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <hr />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <h2><a id="deny" name="deny">Deny</a> <a id="denyfromenv"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai name="denyfromenv">directive</a></h2>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <p><!--%plaintext &lt;?INDEX {\tt Deny} directive&gt; -->
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="directive-dict.html#Syntax"
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai rel="Help"><strong>Syntax:</strong></a> Deny from
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai all|<em>host</em>|env=<em>env-variable</em>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai [<em>host</em>|env=<em>env-variable</em>] ...<br />
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai <a href="directive-dict.html#Context"
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai rel="Help"><strong>Context:</strong></a> directory,
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai .htaccess<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <a href="directive-dict.html#Override"
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai rel="Help"><strong>Override:</strong></a> Limit<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Status"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Status:</strong></a> Base<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Module"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Module:</strong></a> mod_access</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>This directive allows access to the server to be restricted
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai based on hostname, IP address, or environment variables. The
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai arguments for the <code>Deny</code> directive are identical to
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai the arguments for the <a href="#allow">Allow</a> directive.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>See also <a href="#allow">Allow</a>, <a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai href="#order">Order</a> and <a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai href="mod_setenvif.html#SetEnvIf">SetEnvIf</a>.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <hr />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <h2><a id="order" name="order">Order directive</a></h2>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p><!--%plaintext &lt;?INDEX {\tt Order} directive&gt; -->
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Syntax"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Syntax:</strong></a> Order
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <em>ordering</em><br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Default"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Default:</strong></a> <code>Order
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai Deny,Allow</code><br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Context"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Context:</strong></a> directory,
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai .htaccess<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Override"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Override:</strong></a> Limit<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Status"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Status:</strong></a> Base<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <a href="directive-dict.html#Module"
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai rel="Help"><strong>Module:</strong></a> mod_access</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>The <code>Order</code> directive controls the default access
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai state and the order in which <a href="#allow">Allow</a> and <a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai href="#deny">Deny</a> directives are evaluated.
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <em>Ordering</em> is one of</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dl>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dt>Deny,Allow</dt>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>The <code>Deny</code> directives are evaluated before the
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>Allow</code> directives. Access is allowed by default.
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Any client which does not match a <code>Deny</code> directive
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai or does match an <code>Allow</code> directive will be allowed
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai access to the server.</dd>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dt>Allow,Deny</dt>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dd>The <code>Allow</code> directives are evaluated before
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai the <code>Deny</code> directives. Access is denied by
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai default. Any client which does not match an
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>Allow</code> directive or does match a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>Deny</code> directive will be denied access to the
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai server.</dd>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <dt>Mutual-failure</dt>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <dd>Only those hosts which appear on the <code>Allow</code>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai list and do not appear on the <code>Deny</code> list are
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai granted access. This ordering has the same effect as
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>Order Allow,Deny</code> and is deprecated in favor of
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai that configuration.</dd>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </dl>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>Keywords may only be separated by a comma; no whitespace is
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai allowed between them. Note that in all cases every
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>Allow</code> and <code>Deny</code> statement is
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai evaluated.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>In the following example, all hosts in the apache.org domain
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai are allowed access; all other hosts are denied access.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <blockquote>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>Order Deny,Allow<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Deny from all<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Allow from apache.org<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </code>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </blockquote>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>In the next example, all hosts in the apache.org domain are
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai allowed access, except for the hosts which are in the
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai foo.apache.org subdomain, who are denied access. All hosts not
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai in the apache.org domain are denied access because the default
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai state is to deny access to the server.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <blockquote>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <code>Order Allow,Deny<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Allow from apache.org<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai Deny from foo.apache.org<br />
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </code>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai </blockquote>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>On the other hand, if the <code>Order</code> in the last
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai example is changed to <code>Deny,Allow</code>, all hosts will
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai be allowed access. This happens because, regardless of the
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai actual ordering of the directives in the configuration file,
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai the <code>Allow from apache.org</code> will be evaluated last
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai and will override the <code>Deny from foo.apache.org</code>.
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai All hosts not in the <code>apache.org</code> domain will also
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai be allowed access because the default state will change to
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <em>allow</em>.</p>
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>The presence of an <code>Order</code> directive can affect
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai access to a part of the server even in the absence of
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai accompanying <code>Allow</code> and <code>Deny</code>
03f6549a37d5e5e66d82029017e7482b1d0f0154Satyen Desai directives because of its effect on the default access state.
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai For example,</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <blockquote>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>&lt;Directory /www&gt;<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai &nbsp;&nbsp;Order Allow,Deny<br />
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai &lt;/Directory&gt;</code>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai </blockquote>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>will deny all access to the <code>/www</code> directory
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai because the default access state will be set to
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <em>deny</em>.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai <p>The <code>Order</code> directive controls the order of
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai access directive processing only within each phase of the
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai server's configuration processing. This implies, for example,
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai that an <code>Allow</code> or <code>Deny</code> directive
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai occurring in a &lt;Location&gt; section will always be
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai evaluated after an <code>Allow</code> or <code>Deny</code>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai directive occurring in a &lt;Directory&gt; section or
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>.htaccess</code> file, regardless of the setting of the
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <code>Order</code> directive. For details on the merging of
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai configuration sections, see the documentation on <a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai href="/sections.html">How Directory, Location and Files
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai sections work</a>.</p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai <p>See also: <a href="#deny">Deny</a> and <a
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai href="#allow">Allow</a>. <!--#include virtual="footer.html" -->
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai </p>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai </body>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai</html>
ea9d934cb7e379c8bb93c95c66219c403f6eeb30Satyen Desai
9d8a1e46eef4d2ba1724d3656501d1ed2b68ab1bSatyen Desai