mirror of
https://github.com/apache/httpd.git
synced 2025-08-13 14:40:20 +00:00
Backporting syntax highlighting (and a few typo fixes) for base directory files
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1334033 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@ -71,25 +71,25 @@
|
||||
<p>For example, to make the server accept connections on both
|
||||
port 80 and port 8000, on all interfaces, use:</p>
|
||||
|
||||
<example>
|
||||
Listen 80<br />
|
||||
Listen 8000
|
||||
</example>
|
||||
<highlight language="config">
|
||||
Listen 80
|
||||
Listen 8000
|
||||
</highlight>
|
||||
|
||||
<p>To make the server accept connections on port 80 for one interface,
|
||||
and port 8000 on another, use</p>
|
||||
|
||||
<example>
|
||||
Listen 192.0.2.1:80<br />
|
||||
Listen 192.0.2.5:8000
|
||||
</example>
|
||||
<highlight language="config">
|
||||
Listen 192.0.2.1:80
|
||||
Listen 192.0.2.5:8000
|
||||
</highlight>
|
||||
|
||||
<p>IPv6 addresses must be enclosed in square brackets, as in the
|
||||
following example:</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
Listen [2001:db8::a00:20ff:fea7:ccea]:80
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<note type="warning"><p>Overlapping <directive
|
||||
module="mpm_common">Listen</directive> directives will result in a
|
||||
@ -136,10 +136,10 @@
|
||||
<directive module="mpm_common">Listen</directive> directives, as in the
|
||||
following examples:</p>
|
||||
|
||||
<example>
|
||||
Listen 0.0.0.0:80<br />
|
||||
Listen 192.0.2.1:80
|
||||
</example>
|
||||
<highlight language="config">
|
||||
Listen 0.0.0.0:80
|
||||
Listen 192.0.2.1:80
|
||||
</highlight>
|
||||
|
||||
<p>If your platform supports it and you want httpd to handle IPv4 and
|
||||
IPv6 connections on separate sockets (i.e., to disable IPv4-mapped
|
||||
@ -162,9 +162,9 @@
|
||||
<p>You only need to set the protocol if you are running on non-standard
|
||||
ports. For example, running an <code>https</code> site on port 8443:</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
Listen 192.170.2.1:8443 https
|
||||
</example>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="virtualhost">
|
||||
|
@ -430,12 +430,12 @@ Vary: negotiate,accept-language,accept-charset
|
||||
|
||||
<p>Typically the module will be configured as so;</p>
|
||||
|
||||
<example>
|
||||
CacheRoot /var/cache/apache/<br />
|
||||
CacheEnable disk /<br />
|
||||
CacheDirLevels 2<br />
|
||||
<highlight language="config">
|
||||
CacheRoot "/var/cache/apache/"
|
||||
CacheEnable disk /
|
||||
CacheDirLevels 2
|
||||
CacheDirLength 1
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>Importantly, as the cached files are locally stored, operating system
|
||||
in-memory caching will typically be applied to their access also. So
|
||||
@ -663,9 +663,9 @@ CacheDirLength 1
|
||||
instructs httpd to open the file when it is started and to re-use
|
||||
this file-handle for all subsequent access to this file.</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
CacheFile /usr/local/apache2/htdocs/index.html
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>If you intend to cache a large number of files in this manner, you
|
||||
must ensure that your operating system's limit for the number of open
|
||||
@ -755,9 +755,9 @@ sys 0m0.000s</pre>
|
||||
start time (using the mmap system call). httpd will use the in-memory
|
||||
contents for all subsequent accesses to this file.</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
MMapFile /usr/local/apache2/htdocs/index.html
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>As with the
|
||||
<directive module="mod_file_cache">CacheFile</directive> directive, any
|
||||
|
@ -120,7 +120,7 @@
|
||||
defines a file suffix as <code>type-map</code>; this is best done
|
||||
with</p>
|
||||
|
||||
<example>AddHandler type-map .var</example>
|
||||
<highlight language="config">AddHandler type-map .var</highlight>
|
||||
|
||||
<p>in the server configuration file.</p>
|
||||
|
||||
@ -223,7 +223,7 @@
|
||||
module="mod_dir">DirectoryIndex</directive> directive, if the
|
||||
server is trying to index a directory. If the configuration files
|
||||
specify</p>
|
||||
<example>DirectoryIndex index</example>
|
||||
<highlight language="config">DirectoryIndex index</highlight>
|
||||
<p>then the server will arbitrate between <code>index.html</code>
|
||||
and <code>index.html3</code> if both are present. If neither
|
||||
are present, and <code>index.cgi</code> is there, the server
|
||||
@ -512,8 +512,10 @@
|
||||
the normal negotiation process applies.</p>
|
||||
|
||||
<example><title>Example</title>
|
||||
SetEnvIf Cookie "language=(.+)" prefer-language=$1<br />
|
||||
Header append Vary cookie
|
||||
<highlight language="config">
|
||||
SetEnvIf Cookie "language=(.+)" prefer-language=$1
|
||||
Header append Vary cookie
|
||||
</highlight>
|
||||
</example>
|
||||
</section>
|
||||
</section>
|
||||
|
@ -55,19 +55,19 @@
|
||||
if <directive module="core">AllowOverride</directive> is set to
|
||||
FileInfo.</p>
|
||||
|
||||
<example>
|
||||
ErrorDocument 500 "Sorry, our script crashed. Oh dear"<br />
|
||||
ErrorDocument 500 /cgi-bin/crash-recover<br />
|
||||
ErrorDocument 500 http://error.example.com/server_error.html<br />
|
||||
ErrorDocument 404 /errors/not_found.html <br />
|
||||
ErrorDocument 401 /subscription/how_to_subscribe.html
|
||||
</example>
|
||||
<highlight language="config">
|
||||
ErrorDocument 500 "Sorry, our script crashed. Oh dear"<br />
|
||||
ErrorDocument 500 /cgi-bin/crash-recover<br />
|
||||
ErrorDocument 500 http://error.example.com/server_error.html<br />
|
||||
ErrorDocument 404 /errors/not_found.html <br />
|
||||
ErrorDocument 401 /subscription/how_to_subscribe.html
|
||||
</highlight>
|
||||
|
||||
<p>The syntax of the <code>ErrorDocument</code> directive is:</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
ErrorDocument <3-digit-code> <action>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>where the action will be treated as:</p>
|
||||
|
||||
@ -96,7 +96,7 @@
|
||||
'REDIRECT_' onto the original header name. This provides the error
|
||||
document the context of the original request.</p>
|
||||
|
||||
<p>For example, you might recieve, in addition to more usual
|
||||
<p>For example, you might receive, in addition to more usual
|
||||
environment variables, the following.</p>
|
||||
|
||||
<example>
|
||||
@ -135,7 +135,7 @@
|
||||
<p>If you point your <code>ErrorDocument</code> to some variety of
|
||||
dynamic handler such as a server-side include document, CGI
|
||||
script, or some variety of other handler, you may wish to use the
|
||||
available custom environent variables to customize this
|
||||
available custom environment variables to customize this
|
||||
response.</p>
|
||||
|
||||
<p>If the ErrorDocument specifies a local redirect to a CGI
|
||||
|
@ -37,13 +37,13 @@
|
||||
<section id="example">
|
||||
<title>A Simple Example</title>
|
||||
|
||||
<example>
|
||||
# This is a misconfiguration example, do not use on your server <br />
|
||||
<VirtualHost www.example.dom> <br />
|
||||
ServerAdmin webgirl@example.dom <br />
|
||||
DocumentRoot /www/example <br />
|
||||
</VirtualHost>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
# This is a misconfiguration example, do not use on your server
|
||||
<VirtualHost www.example.dom>
|
||||
ServerAdmin webgirl@example.dom
|
||||
DocumentRoot /www/example
|
||||
</VirtualHost>
|
||||
</highlight>
|
||||
|
||||
<p>In order for the server to function properly, it absolutely needs
|
||||
to have two pieces of information about each virtual host: the
|
||||
@ -59,13 +59,13 @@
|
||||
<p>Suppose that <code>www.example.dom</code> has address 192.0.2.1.
|
||||
Then consider this configuration snippet:</p>
|
||||
|
||||
<example>
|
||||
# This is a misconfiguration example, do not use on your server <br />
|
||||
<VirtualHost 192.0.2.1> <br />
|
||||
ServerAdmin webgirl@example.dom <br />
|
||||
DocumentRoot /www/example <br />
|
||||
</VirtualHost>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
# This is a misconfiguration example, do not use on your server
|
||||
<VirtualHost 192.0.2.1>
|
||||
ServerAdmin webgirl@example.dom
|
||||
DocumentRoot /www/example
|
||||
</VirtualHost>
|
||||
</highlight>
|
||||
|
||||
<p>This time httpd needs to use reverse DNS to find the
|
||||
<code>ServerName</code> for this virtualhost. If that reverse
|
||||
@ -78,13 +78,13 @@
|
||||
|
||||
<p>Here is a snippet that avoids both of these problems:</p>
|
||||
|
||||
<example>
|
||||
<VirtualHost 192.0.2.1> <br />
|
||||
ServerName www.example.dom <br />
|
||||
ServerAdmin webgirl@example.dom <br />
|
||||
DocumentRoot /www/example <br />
|
||||
</VirtualHost>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
<VirtualHost 192.0.2.1>
|
||||
ServerName www.example.dom
|
||||
ServerAdmin webgirl@example.dom
|
||||
DocumentRoot /www/example
|
||||
</VirtualHost>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="denial">
|
||||
@ -92,21 +92,16 @@
|
||||
|
||||
<p>Consider this configuration snippet:</p>
|
||||
|
||||
<example>
|
||||
<VirtualHost www.example1.dom><br />
|
||||
<indent>
|
||||
ServerAdmin webgirl@example1.dom<br />
|
||||
DocumentRoot /www/example1<br />
|
||||
</indent>
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
<VirtualHost www.example2.dom><br />
|
||||
<indent>
|
||||
ServerAdmin webguy@example2.dom<br />
|
||||
DocumentRoot /www/example2<br />
|
||||
</indent>
|
||||
</VirtualHost>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
<VirtualHost www.example1.dom>
|
||||
ServerAdmin webgirl@example1.dom
|
||||
DocumentRoot /www/example1
|
||||
</VirtualHost>
|
||||
<VirtualHost www.example2.dom>
|
||||
ServerAdmin webguy@example2.dom
|
||||
DocumentRoot /www/example2
|
||||
</VirtualHost>
|
||||
</highlight>
|
||||
|
||||
<p>Suppose that you've assigned 192.0.2.1 to
|
||||
<code>www.example1.dom</code> and 192.0.2.2 to
|
||||
|
@ -446,14 +446,14 @@
|
||||
</module> and <module>mod_header</module> allows you to still accept
|
||||
these headers:</p>
|
||||
|
||||
<example>
|
||||
# <br />
|
||||
# The following works around a client sending a broken Accept_Encoding<br />
|
||||
# header.<br />
|
||||
#<br />
|
||||
SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1<br />
|
||||
<highlight language="config">
|
||||
#
|
||||
# The following works around a client sending a broken Accept_Encoding
|
||||
# header.
|
||||
#
|
||||
SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
|
||||
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
|
||||
@ -464,27 +464,27 @@ RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encodin
|
||||
httpd.conf to deal with known client problems. Since the affected clients
|
||||
are no longer seen in the wild, this configuration is likely no-longer
|
||||
necessary.</p>
|
||||
<example>
|
||||
#<br />
|
||||
# The following directives modify normal HTTP response behavior.<br />
|
||||
# The first directive disables keepalive for Netscape 2.x and browsers that<br />
|
||||
# spoof it. There are known problems with these browser implementations.<br />
|
||||
# The second directive is for Microsoft Internet Explorer 4.0b2<br />
|
||||
# which has a broken HTTP/1.1 implementation and does not properly<br />
|
||||
# support keepalive when it is used on 301 or 302 (redirect) responses.<br />
|
||||
#<br />
|
||||
BrowserMatch "Mozilla/2" nokeepalive<br />
|
||||
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0<br />
|
||||
<br />
|
||||
#<br />
|
||||
# The following directive disables HTTP/1.1 responses to browsers which<br />
|
||||
# are in violation of the HTTP/1.0 spec by not being able to understand a<br />
|
||||
# basic 1.1 response.<br />
|
||||
#<br />
|
||||
BrowserMatch "RealPlayer 4\.0" force-response-1.0<br />
|
||||
BrowserMatch "Java/1\.0" force-response-1.0<br />
|
||||
<highlight language="config">
|
||||
#
|
||||
# The following directives modify normal HTTP response behavior.
|
||||
# The first directive disables keepalive for Netscape 2.x and browsers that
|
||||
# spoof it. There are known problems with these browser implementations.
|
||||
# The second directive is for Microsoft Internet Explorer 4.0b2
|
||||
# which has a broken HTTP/1.1 implementation and does not properly
|
||||
# support keepalive when it is used on 301 or 302 (redirect) responses.
|
||||
#
|
||||
BrowserMatch "Mozilla/2" nokeepalive
|
||||
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
|
||||
|
||||
#
|
||||
# The following directive disables HTTP/1.1 responses to browsers which
|
||||
# are in violation of the HTTP/1.0 spec by not being able to understand a
|
||||
# basic 1.1 response.
|
||||
#
|
||||
BrowserMatch "RealPlayer 4\.0" force-response-1.0
|
||||
BrowserMatch "Java/1\.0" force-response-1.0
|
||||
BrowserMatch "JDK/1\.0" force-response-1.0
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
<section id="no-img-log">
|
||||
@ -495,12 +495,12 @@ BrowserMatch "JDK/1\.0" force-response-1.0
|
||||
particular directories, or to prevent logging of requests
|
||||
coming from particular hosts.</p>
|
||||
|
||||
<example>
|
||||
SetEnvIf Request_URI \.gif image-request<br />
|
||||
SetEnvIf Request_URI \.jpg image-request<br />
|
||||
SetEnvIf Request_URI \.png image-request<br />
|
||||
CustomLog logs/access_log common env=!image-request
|
||||
</example>
|
||||
<highlight language="config">
|
||||
SetEnvIf Request_URI \.gif image-request
|
||||
SetEnvIf Request_URI \.jpg image-request
|
||||
SetEnvIf Request_URI \.png image-request
|
||||
CustomLog logs/access_log common env=!image-request
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
<section id="image-theft">
|
||||
@ -512,18 +512,16 @@ BrowserMatch "JDK/1\.0" force-response-1.0
|
||||
in limited circumstances. We assume that all your images are in
|
||||
a directory called <code>/web/images</code>.</p>
|
||||
|
||||
<example>
|
||||
SetEnvIf Referer "^http://www\.example\.com/" local_referal<br />
|
||||
# Allow browsers that do not send Referer info<br />
|
||||
SetEnvIf Referer "^$" local_referal<br />
|
||||
<Directory /web/images><br />
|
||||
<indent>
|
||||
Order Deny,Allow<br />
|
||||
Deny from all<br />
|
||||
Allow from env=local_referal
|
||||
</indent>
|
||||
</Directory>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
SetEnvIf Referer "^http://www\.example\.com/" local_referal
|
||||
# Allow browsers that do not send Referer info
|
||||
SetEnvIf Referer "^$" local_referal
|
||||
<Directory /web/images>
|
||||
Order Deny,Allow
|
||||
Deny from all
|
||||
Allow from env=local_referal
|
||||
</Directory>
|
||||
</highlight>
|
||||
|
||||
<p>For more information about this technique, see the
|
||||
"<a href="http://www.serverwatch.com/tutorials/article.php/1132731"
|
||||
|
@ -52,8 +52,8 @@
|
||||
<seealso><module>mod_include</module></seealso>
|
||||
|
||||
<section id="grammar">
|
||||
<title>Grammar in Backus–Naur Form notation</title>
|
||||
<p><a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form">Backus–Naur Form</a> (BNF) is a notation
|
||||
<title>Grammar in Backus-Naur Form notation</title>
|
||||
<p><a href="http://en.wikipedia.org/wiki/Backus%E2%80%93Naur_Form">Backus-Naur Form</a> (BNF) is a notation
|
||||
technique for context-free grammars, often used to describe the syntax of languages used in computing.
|
||||
</p>
|
||||
<blockquote>
|
||||
@ -476,26 +476,22 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
|
||||
<title>Example expressions</title>
|
||||
<p>The following examples show how expressions might be used to evaluate requests:</p>
|
||||
<!-- This section should probably be extended with more, useful examples -->
|
||||
<example>
|
||||
# Compare the host name to example.com and redirect to www.example.com if it matches<br />
|
||||
<If "%{HTTP_HOST} == 'example.com'"><br />
|
||||
<indent>
|
||||
Redirect permanent / http://www.example.com<br />
|
||||
</indent>
|
||||
</If><br /><br />
|
||||
# Force text/plain if requesting a file with the query string contains 'forcetext'<br />
|
||||
<If "%{QUERY_STRING} =~ /forcetext/"><br />
|
||||
<indent>
|
||||
ForceType text/plain<br />
|
||||
</indent>
|
||||
</If><br /><br />
|
||||
# Only allow access to this content during business hours<br />
|
||||
<Directory "/foo/bar/business"><br />
|
||||
<indent>
|
||||
Require expr %{TIME_HOUR} >= 9 && %{TIME_HOUR} <= 17 <br />
|
||||
</indent>
|
||||
</Directory>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
# Compare the host name to example.com and redirect to www.example.com if it matches
|
||||
<If "%{HTTP_HOST} == 'example.com'">
|
||||
Redirect permanent / http://www.example.com
|
||||
</If>
|
||||
|
||||
# Force text/plain if requesting a file with the query string contains 'forcetext'
|
||||
<If "%{QUERY_STRING} =~ /forcetext/">
|
||||
ForceType text/plain
|
||||
</If>
|
||||
|
||||
# Only allow access to this content during business hours
|
||||
<Directory "/foo/bar/business">
|
||||
Require expr %{TIME_HOUR} >= 9 && %{TIME_HOUR} <= 17
|
||||
</Directory>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="other">
|
||||
|
@ -47,6 +47,7 @@
|
||||
<module>mod_substitute</module>
|
||||
<module>mod_xml2enc</module>
|
||||
<module>mod_proxy_html</module>
|
||||
<module>mod_policy</module>
|
||||
</modulelist>
|
||||
<directivelist>
|
||||
<directive module="mod_filter">FilterChain</directive>
|
||||
|
@ -382,7 +382,7 @@
|
||||
be written as "<code>/images/.*(jpg|gif)$</code>". In places where
|
||||
regular expressions are used to replace strings, the special variables
|
||||
$1 ... $9 contain backreferences to the grouped parts (in parentheses) of
|
||||
the matched expression. The special variable $0 contains a backerference
|
||||
the matched expression. The special variable $0 contains a backreference
|
||||
to the whole matched expression. To write a literal dollar sign in a
|
||||
replacement string, it can be escaped with a backslash. Historically, the
|
||||
variable & could be used as alias for $0 in some places. This is no
|
||||
|
@ -105,10 +105,10 @@
|
||||
the <code>html</code> extension to trigger the launch of the
|
||||
<code>footer.pl</code> CGI script.</p>
|
||||
|
||||
<example>
|
||||
Action add-footer /cgi-bin/footer.pl<br/>
|
||||
AddHandler add-footer .html
|
||||
</example>
|
||||
<highlight language="config">
|
||||
Action add-footer /cgi-bin/footer.pl
|
||||
AddHandler add-footer .html
|
||||
</highlight>
|
||||
|
||||
<p>Then the CGI script is responsible for sending the
|
||||
originally requested document (pointed to by the
|
||||
@ -126,11 +126,11 @@
|
||||
the <code>send-as-is</code> handler, regardless of their
|
||||
filename extensions.</p>
|
||||
|
||||
<example>
|
||||
<Directory /web/htdocs/asis><br/>
|
||||
SetHandler send-as-is<br/>
|
||||
</Directory>
|
||||
</example>
|
||||
<highlight language="config">
|
||||
<Directory /web/htdocs/asis>
|
||||
SetHandler send-as-is
|
||||
</Directory>
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
@ -142,9 +142,9 @@
|
||||
you may wish to make use of. Specifically, a new record has
|
||||
been added to the <code>request_rec</code> structure:</p>
|
||||
|
||||
<example>
|
||||
<highlight language="c">
|
||||
char *handler
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>If you wish to have your module engage a handler, you need
|
||||
only to set <code>r->handler</code> to the name of the
|
||||
|
@ -138,7 +138,7 @@
|
||||
you may have to install the corresponding <code>-dev</code>
|
||||
package to allow httpd to build against your installed copy
|
||||
of PCRE.</dd>
|
||||
|
||||
|
||||
<dt>Disk Space</dt>
|
||||
<dd>Make sure you have at least 50 MB of temporary free disk
|
||||
space available. After installation the server occupies
|
||||
@ -364,7 +364,7 @@ $ tar xvf httpd-<em>NN</em>.tar
|
||||
major releases (for example, from 2.0 to 2.2 or from 2.2 to 2.3),
|
||||
there will likely be major differences in the compile-time and
|
||||
run-time configuration that will require manual adjustments. All
|
||||
modules will also need to be upgraded to accomodate changes in the
|
||||
modules will also need to be upgraded to accommodate changes in the
|
||||
module API.</p>
|
||||
|
||||
<p>Upgrading from one minor version to the next (for example, from
|
||||
|
@ -167,9 +167,9 @@
|
||||
<p>Do this by specifying the name of the module in your
|
||||
<directive>LogLevel</directive> directive:</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
LogLevel info rewrite:trace5
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>This sets the main <directive>LogLevel</directive> to info, but
|
||||
turns it up to <code>trace5</code> for
|
||||
@ -235,10 +235,10 @@
|
||||
<p>A typical configuration for the access log might look as
|
||||
follows.</p>
|
||||
|
||||
<example>
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
|
||||
CustomLog logs/access_log common
|
||||
</example>
|
||||
<highlight language="config">
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b" common
|
||||
CustomLog logs/access_log common
|
||||
</highlight>
|
||||
|
||||
<p>This defines the <em>nickname</em> <code>common</code> and
|
||||
associates it with a particular log format string. The format
|
||||
@ -381,11 +381,10 @@
|
||||
<p>Another commonly used format string is called the Combined
|
||||
Log Format. It can be used as follows.</p>
|
||||
|
||||
<example>
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
|
||||
\"%{User-agent}i\"" combined<br />
|
||||
CustomLog log/access_log combined
|
||||
</example>
|
||||
<highlight language="config">
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
|
||||
CustomLog log/access_log combined
|
||||
</highlight>
|
||||
|
||||
<p>This format is exactly the same as the Common Log Format,
|
||||
with the addition of two more fields. Each of the additional
|
||||
@ -435,12 +434,12 @@
|
||||
to mimic the effects of the <code>ReferLog</code> and <code
|
||||
>AgentLog</code> directives.</p>
|
||||
|
||||
<example>
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b" common<br />
|
||||
CustomLog logs/access_log common<br />
|
||||
CustomLog logs/referer_log "%{Referer}i -> %U"<br />
|
||||
CustomLog logs/agent_log "%{User-agent}i"
|
||||
</example>
|
||||
<highlight language="config">
|
||||
LogFormat "%h %l %u %t \"%r\" %>s %b" common
|
||||
CustomLog logs/access_log common
|
||||
CustomLog logs/referer_log "%{Referer}i -> %U"
|
||||
CustomLog logs/agent_log "%{User-agent}i"
|
||||
</highlight>
|
||||
|
||||
<p>This example also shows that it is not necessary to define a
|
||||
nickname with the <directive
|
||||
@ -464,34 +463,34 @@
|
||||
include or exclude requests where the environment variable is
|
||||
set. Some examples:</p>
|
||||
|
||||
<example>
|
||||
# Mark requests from the loop-back interface<br />
|
||||
SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog<br />
|
||||
# Mark requests for the robots.txt file<br />
|
||||
SetEnvIf Request_URI "^/robots\.txt$" dontlog<br />
|
||||
# Log what remains<br />
|
||||
CustomLog logs/access_log common env=!dontlog
|
||||
</example>
|
||||
<highlight language="config">
|
||||
# Mark requests from the loop-back interface
|
||||
SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
|
||||
# Mark requests for the robots.txt file
|
||||
SetEnvIf Request_URI "^/robots\.txt$" dontlog
|
||||
# Log what remains
|
||||
CustomLog logs/access_log common env=!dontlog
|
||||
</highlight>
|
||||
|
||||
<p>As another example, consider logging requests from
|
||||
english-speakers to one log file, and non-english speakers to a
|
||||
different log file.</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
SetEnvIf Accept-Language "en" english<br />
|
||||
CustomLog logs/english_log common env=english<br />
|
||||
CustomLog logs/non_english_log common env=!english
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>In a caching scenario one would want to know about
|
||||
the efficiency of the cache. A very simple method to
|
||||
find this out would be:</p>
|
||||
|
||||
<example>
|
||||
SetEnv CACHE_MISS 1<br />
|
||||
LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache<br />
|
||||
CustomLog logs/access_log common-cache
|
||||
</example>
|
||||
<highlight language="config">
|
||||
SetEnv CACHE_MISS 1
|
||||
LogFormat "%h %l %u %t "%r " %>s %b %{CACHE_MISS}e" common-cache
|
||||
CustomLog logs/access_log common-cache
|
||||
</highlight>
|
||||
|
||||
<p><module>mod_cache</module> will run before
|
||||
<module>mod_env</module> and when successfull will deliver the
|
||||
@ -502,10 +501,10 @@
|
||||
module="mod_log_config">LogFormat</directive> supports logging values
|
||||
conditional upon the HTTP response code:</p>
|
||||
|
||||
<example>
|
||||
LogFormat "%400,501{User-agent}i" browserlog<br />
|
||||
LogFormat "%!200,304,302{Referer}i" refererlog
|
||||
</example>
|
||||
<highlight language="config">
|
||||
LogFormat "%400,501{User-agent}i" browserlog
|
||||
LogFormat "%!200,304,302{Referer}i" refererlog
|
||||
</highlight>
|
||||
|
||||
<p>In the first example, the <code>User-agent</code> will be
|
||||
logged if the HTTP status code is 400 or 501. In other cases, a
|
||||
@ -586,10 +585,9 @@
|
||||
for this purpose. For example, to rotate the logs every 24 hours, you
|
||||
can use:</p>
|
||||
|
||||
<example>
|
||||
CustomLog "|/usr/local/apache/bin/rotatelogs
|
||||
/var/log/access_log 86400" common
|
||||
</example>
|
||||
<highlight language="config">
|
||||
CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
|
||||
</highlight>
|
||||
|
||||
<p>Notice that quotes are used to enclose the entire command
|
||||
that will be called for the pipe. Although these examples are
|
||||
@ -608,11 +606,10 @@
|
||||
a shell. Use "<code>|$</code>" instead of "<code>|</code>"
|
||||
to spawn using a shell (usually with <code>/bin/sh -c</code>):</p>
|
||||
|
||||
<example>
|
||||
# Invoke "rotatelogs" using a shell<br />
|
||||
CustomLog "|$/usr/local/apache/bin/rotatelogs
|
||||
/var/log/access_log 86400" common
|
||||
</example>
|
||||
<highlight language="config">
|
||||
# Invoke "rotatelogs" using a shell
|
||||
CustomLog "|$/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common
|
||||
</highlight>
|
||||
|
||||
<p>This was the default behaviour for Apache 2.2.
|
||||
Depending on the shell specifics this might lead to
|
||||
@ -657,11 +654,10 @@
|
||||
later split the log into individual files. For example,
|
||||
consider the following directives.</p>
|
||||
|
||||
<example>
|
||||
LogFormat "%v %l %u %t \"%r\" %>s %b"
|
||||
comonvhost<br />
|
||||
CustomLog logs/access_log comonvhost
|
||||
</example>
|
||||
<highlight language="config">
|
||||
LogFormat "%v %l %u %t \"%r\" %>s %b" comonvhost
|
||||
CustomLog logs/access_log comonvhost
|
||||
</highlight>
|
||||
|
||||
<p>The <code>%v</code> is used to log the name of the virtual
|
||||
host that is serving the request. Then a program like <a
|
||||
|
@ -75,11 +75,11 @@ with the following configuration, all requests will be redirected
|
||||
to another site only if the server is started using
|
||||
<code>httpd -DClosedForNow</code>:</p>
|
||||
|
||||
<example>
|
||||
<IfDefine ClosedForNow><br />
|
||||
Redirect / http://otherserver.example.com/<br />
|
||||
<highlight language="config">
|
||||
<IfDefine ClosedForNow>
|
||||
Redirect / http://otherserver.example.com/
|
||||
</IfDefine>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>The <directive type="section" module="core">IfModule</directive>
|
||||
directive is very similar, except it encloses directives that will
|
||||
@ -97,11 +97,11 @@ about missing modules.</p>
|
||||
module="mod_mime_magic">MimeMagicFile</directive> directive will be
|
||||
applied only if <module>mod_mime_magic</module> is available.</p>
|
||||
|
||||
<example>
|
||||
<IfModule mod_mime_magic.c><br />
|
||||
MimeMagicFile conf/magic<br />
|
||||
<highlight language="config">
|
||||
<IfModule mod_mime_magic.c>
|
||||
MimeMagicFile conf/magic
|
||||
</IfModule>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>The <directive type="section" module="mod_version">IfVersion</directive>
|
||||
directive is very similar to <directive type="section"
|
||||
@ -111,14 +111,12 @@ only be applied if a particular version of the server is executing. This
|
||||
module is designed for the use in test suites and large networks which have to
|
||||
deal with different httpd versions and different configurations.</p>
|
||||
|
||||
<example>
|
||||
<IfVersion >= 2.1><br />
|
||||
<indent>
|
||||
# this happens only in versions greater or<br />
|
||||
# equal 2.1.0.<br />
|
||||
</indent>
|
||||
<highlight language="config">
|
||||
<IfVersion >= 2.1>
|
||||
# this happens only in versions greater or
|
||||
# equal 2.1.0.
|
||||
</IfVersion>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p><directive type="section" module="core">IfDefine</directive>,
|
||||
<directive type="section" module="core">IfModule</directive>, and the
|
||||
@ -162,11 +160,11 @@ href="howto/htaccess.html">.htaccess files</a>. For example, in the
|
||||
following configuration, directory indexes will be enabled for the
|
||||
<code>/var/web/dir1</code> directory and all subdirectories.</p>
|
||||
|
||||
<example>
|
||||
<Directory /var/web/dir1><br />
|
||||
Options +Indexes<br />
|
||||
<highlight language="config">
|
||||
<Directory /var/web/dir1>
|
||||
Options +Indexes
|
||||
</Directory>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>Directives enclosed in a <directive type="section"
|
||||
module="core">Files</directive> section apply to any file with
|
||||
@ -176,12 +174,12 @@ when placed in the main section of the configuration file,
|
||||
deny access to any file named <code>private.html</code> regardless
|
||||
of where it is found.</p>
|
||||
|
||||
<example>
|
||||
<Files private.html><br />
|
||||
Order allow,deny<br />
|
||||
Deny from all<br />
|
||||
<highlight language="config">
|
||||
<Files private.html>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>To address files found in a particular part of the filesystem, the
|
||||
<directive type="section" module="core">Files</directive> and
|
||||
@ -193,14 +191,14 @@ access to <code>/var/web/dir1/private.html</code>,
|
||||
of <code>private.html</code> found under the <code>/var/web/dir1/</code>
|
||||
directory.</p>
|
||||
|
||||
<example>
|
||||
<Directory /var/web/dir1><br />
|
||||
<Files private.html><br />
|
||||
Order allow,deny<br />
|
||||
Deny from all<br />
|
||||
</Files><br />
|
||||
<highlight language="config">
|
||||
<Directory /var/web/dir1>
|
||||
<Files private.html>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
</Directory>
|
||||
</example>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="webspace"><title>Webspace Containers</title>
|
||||
@ -216,12 +214,12 @@ In particular, it will apply to requests for
|
||||
<code>http://yoursite.example.com/private/dir/file.html</code> as well
|
||||
as any other requests starting with the <code>/private</code> string.</p>
|
||||
|
||||
<example>
|
||||
<LocationMatch ^/private><br />
|
||||
Order Allow,Deny<br />
|
||||
Deny from all<br />
|
||||
<highlight language="config">
|
||||
<LocationMatch ^/private>
|
||||
Order Allow,Deny
|
||||
Deny from all
|
||||
</Location>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>The <directive type="section" module="core">Location</directive>
|
||||
directive need not have anything to do with the filesystem.
|
||||
@ -230,35 +228,35 @@ URL to an internal Apache HTTP Server handler provided by <module>mod_status</mo
|
||||
No file called <code>server-status</code> needs to exist in the
|
||||
filesystem.</p>
|
||||
|
||||
<example>
|
||||
<Location /server-status><br />
|
||||
SetHandler server-status<br />
|
||||
<highlight language="config">
|
||||
<Location /server-status>
|
||||
SetHandler server-status
|
||||
</Location>
|
||||
</example>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="overlapping-webspace"><title>Overlapping Webspace</title>
|
||||
<p>In order to have two overlapping URLs one has to consider the order in which
|
||||
certain sections or directives are evaluated. For
|
||||
<directive type="section" module="core">Location</directive> this would be:</p>
|
||||
<example>
|
||||
<Location /foo><br />
|
||||
</Location><br />
|
||||
<Location /foo/bar><br />
|
||||
<highlight language="config">
|
||||
<Location /foo>
|
||||
</Location>
|
||||
<Location /foo/bar>
|
||||
</Location>
|
||||
</example>
|
||||
</highlight>
|
||||
<p><directive type="section" module="mod_alias">Alias</directive>es on the other hand,
|
||||
are mapped vice-versa:</p>
|
||||
<example>
|
||||
Alias /foo/bar /srv/www/uncommon/bar<br />
|
||||
Alias /foo /srv/www/common/foo<br />
|
||||
</example>
|
||||
<highlight language="config">
|
||||
Alias /foo/bar /srv/www/uncommon/bar
|
||||
Alias /foo /srv/www/common/foo
|
||||
</highlight>
|
||||
<p>The same is true for the <directive module="mod_proxy">ProxyPass</directive>
|
||||
directives:</p>
|
||||
<example>
|
||||
ProxyPass /special-area http://special.example.com smax=5 max=10<br />
|
||||
<highlight language="config">
|
||||
ProxyPass /special-area http://special.example.com smax=5 max=10
|
||||
ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On
|
||||
</example>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="wildcards"><title>Wildcards and Regular Expressions</title>
|
||||
@ -287,20 +285,20 @@ how directives are applied.</p>
|
||||
<p>A non-regex wildcard section that changes the configuration of
|
||||
all user directories could look as follows:</p>
|
||||
|
||||
<example>
|
||||
<Directory /home/*/public_html><br />
|
||||
Options Indexes<br />
|
||||
<highlight language="config">
|
||||
<Directory /home/*/public_html>
|
||||
Options Indexes
|
||||
</Directory>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>Using regex sections, we can deny access to many types of image files
|
||||
at once:</p>
|
||||
<example>
|
||||
<FilesMatch \.(?i:gif|jpe?g|png)$><br />
|
||||
Order allow,deny<br />
|
||||
Deny from all<br />
|
||||
<highlight language="config">
|
||||
<FilesMatch \.(?i:gif|jpe?g|png)$>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</FilesMatch>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
|
||||
@ -310,11 +308,11 @@ directive change the configuration depending on a condition which can be
|
||||
expressed by a boolean expression. For example, the following configuration
|
||||
denies access if the HTTP Referer header does not start with
|
||||
"http://www.example.com/".</p>
|
||||
<example>
|
||||
<If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')"><br />
|
||||
Require all denied<br />
|
||||
<highlight language="config">
|
||||
<If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')">
|
||||
Require all denied
|
||||
</If>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
|
||||
@ -336,12 +334,12 @@ different webspace locations (URLs) could map to the same filesystem
|
||||
location, allowing your restrictions to be circumvented.
|
||||
For example, consider the following configuration:</p>
|
||||
|
||||
<example>
|
||||
<Location /dir/><br />
|
||||
Order allow,deny<br />
|
||||
Deny from all<br />
|
||||
<highlight language="config">
|
||||
<Location /dir/>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Location>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>This works fine if the request is for
|
||||
<code>http://yoursite.example.com/dir/</code>. But what if you are on
|
||||
@ -404,12 +402,12 @@ that match the specified URL. For example, the following configuration
|
||||
will prevent the proxy server from being used to access the
|
||||
<code>www.example.com</code> website.</p>
|
||||
|
||||
<example>
|
||||
<Proxy http://www.example.com/*><br />
|
||||
Order allow,deny<br />
|
||||
Deny from all<br />
|
||||
<highlight language="config">
|
||||
<Proxy http://www.example.com/*>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Proxy>
|
||||
</example>
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="whatwhere"><title>What Directives are Allowed?</title>
|
||||
@ -530,30 +528,30 @@ merging. Assuming they all apply to the request, the directives in
|
||||
this example will be applied in the order A > B > C > D >
|
||||
E.</p>
|
||||
|
||||
<example>
|
||||
<Location /><br />
|
||||
E<br />
|
||||
</Location><br />
|
||||
<br />
|
||||
<Files f.html><br />
|
||||
D<br />
|
||||
</Files><br />
|
||||
<br />
|
||||
<VirtualHost *><br />
|
||||
<Directory /a/b><br />
|
||||
B<br />
|
||||
</Directory><br />
|
||||
</VirtualHost><br />
|
||||
<br />
|
||||
<DirectoryMatch "^.*b$"><br />
|
||||
C<br />
|
||||
</DirectoryMatch><br />
|
||||
<br />
|
||||
<Directory /a/b><br />
|
||||
A<br />
|
||||
</Directory><br />
|
||||
<br />
|
||||
</example>
|
||||
<highlight language="config">
|
||||
<Location />
|
||||
E
|
||||
</Location>
|
||||
|
||||
<Files f.html>
|
||||
D
|
||||
</Files>
|
||||
|
||||
<VirtualHost *>
|
||||
<Directory /a/b>
|
||||
B
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
|
||||
<DirectoryMatch "^.*b$">
|
||||
C
|
||||
</DirectoryMatch>
|
||||
|
||||
<Directory /a/b>
|
||||
A
|
||||
</Directory>
|
||||
|
||||
</highlight>
|
||||
|
||||
<p>For a more concrete example, consider the following. Regardless of
|
||||
any access restrictions placed in <directive module="core"
|
||||
@ -562,19 +560,19 @@ module="core" type="section">Location</directive> section will be
|
||||
evaluated last and will allow unrestricted access to the server. In
|
||||
other words, order of merging is important, so be careful!</p>
|
||||
|
||||
<example>
|
||||
<Location /><br />
|
||||
Order deny,allow<br />
|
||||
Allow from all<br />
|
||||
</Location><br />
|
||||
<br />
|
||||
# Woops! This <Directory> section will have no effect<br />
|
||||
<Directory /><br />
|
||||
Order allow,deny<br />
|
||||
Allow from all<br />
|
||||
Deny from badguy.example.com<br />
|
||||
<highlight language="config">
|
||||
<Location />
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
</Location>
|
||||
|
||||
# Woops! This <Directory> section will have no effect
|
||||
<Directory />
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
Deny from badguy.example.com
|
||||
</Directory>
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
</section>
|
||||
|
||||
|
@ -40,6 +40,7 @@
|
||||
<p>The only configuration required is to select which cache provider
|
||||
to use. This is the responsibility of modules using the cache, and
|
||||
they enable selection using directives such as
|
||||
<directive module="mod_cache_socache">CacheSocache</directive>,
|
||||
<directive module="mod_authn_socache">AuthnCacheSOCache</directive>,
|
||||
<directive module="mod_ssl">SSLSessionCache</directive>, and
|
||||
<directive module="mod_ssl">SSLStaplingCache</directive>.</p>
|
||||
|
@ -239,7 +239,7 @@
|
||||
|
||||
<p class="indent">
|
||||
If it doesn't exist, it can't very well contain files. If we
|
||||
can't change directory to it, it might aswell not exist.
|
||||
can't change directory to it, it might as well not exist.
|
||||
</p>
|
||||
</li>
|
||||
|
||||
@ -466,10 +466,10 @@
|
||||
|
||||
<p>If for example, your web server is configured to run as:</p>
|
||||
|
||||
<example>
|
||||
User www<br />
|
||||
Group webgroup<br />
|
||||
</example>
|
||||
<highlight language="config">
|
||||
User www
|
||||
Group webgroup
|
||||
</highlight>
|
||||
|
||||
<p>and <program>suexec</program> is installed at
|
||||
"/usr/local/apache2/bin/suexec", you should run:</p>
|
||||
|
@ -84,12 +84,6 @@
|
||||
|
||||
<li>configure: the "reallyall" module set adds developer modules
|
||||
to the "all" set</li>
|
||||
|
||||
<li>apr and apr-util: APR and APR-Util are no longer bundled with
|
||||
Apache httpd 2.4. You can either use already installed versions or
|
||||
continue to use <code>--with-included-apr</code> after downloading
|
||||
(from <a href="http://apr.apache.org/">Apache APR</a>) and unpacking
|
||||
apr/apr-util into <code>./srclib/</code></li>
|
||||
</ul>
|
||||
|
||||
</section>
|
||||
@ -136,23 +130,31 @@
|
||||
<p>In this example, all requests are denied.</p>
|
||||
<example>
|
||||
<title>2.2 configuration:</title>
|
||||
Order deny,allow<br />
|
||||
Deny from all
|
||||
<highlight language="config">
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
</highlight>
|
||||
</example>
|
||||
<example>
|
||||
<title>2.4 configuration:</title>
|
||||
<highlight language="config">
|
||||
Require all denied
|
||||
</highlight>
|
||||
</example>
|
||||
|
||||
<p>In this example, all requests are allowed.</p>
|
||||
<example>
|
||||
<title>2.2 configuration:</title>
|
||||
Order allow,deny<br />
|
||||
Allow from all
|
||||
<highlight language="config">
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</highlight>
|
||||
</example>
|
||||
<example>
|
||||
<title>2.4 configuration:</title>
|
||||
<highlight language="config">
|
||||
Require all granted
|
||||
</highlight>
|
||||
</example>
|
||||
|
||||
<p>In the following example, all hosts in the example.org domain
|
||||
@ -160,13 +162,17 @@
|
||||
|
||||
<example>
|
||||
<title>2.2 configuration:</title>
|
||||
Order Deny,Allow<br />
|
||||
Deny from all<br />
|
||||
Allow from example.org
|
||||
<highlight language="config">
|
||||
Order Deny,Allow
|
||||
Deny from all
|
||||
Allow from example.org
|
||||
</highlight>
|
||||
</example>
|
||||
<example>
|
||||
<title>2.4 configuration:</title>
|
||||
<highlight language="config">
|
||||
Require host example.org
|
||||
</highlight>
|
||||
</example>
|
||||
</section>
|
||||
|
||||
|
@ -118,7 +118,7 @@
|
||||
module="mod_alias">Alias</directive> directive will map any part
|
||||
of the filesystem into the web space. For example, with</p>
|
||||
|
||||
<example>Alias /docs /var/web</example>
|
||||
<highlight language="config">Alias /docs /var/web</highlight>
|
||||
|
||||
<p>the URL <code>http://www.example.com/docs/dir/file.html</code>
|
||||
will be served from <code>/var/web/dir/file.html</code>. The
|
||||
@ -134,8 +134,9 @@
|
||||
expression</glossary> based matching and substitution. For
|
||||
example,</p>
|
||||
|
||||
<example>ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+)
|
||||
/home/$1/cgi-bin/$2</example>
|
||||
<highlight language="config">
|
||||
ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+) /home/$1/cgi-bin/$2
|
||||
</highlight>
|
||||
|
||||
<p>will map a request to
|
||||
<code>http://example.com/~user/cgi-bin/script.cgi</code> to the
|
||||
@ -181,8 +182,9 @@
|
||||
<code>/home/user/public_html/file.html</code>, use the following
|
||||
<code>AliasMatch</code> directive:</p>
|
||||
|
||||
<example>AliasMatch ^/upages/([a-zA-Z0-9]+)(/(.*))?$
|
||||
/home/$1/public_html/$3</example>
|
||||
<highlight language="config">
|
||||
AliasMatch ^/upages/([a-zA-Z0-9]+)(/(.*))?$ /home/$1/public_html/$3
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="redirect"><title>URL Redirection</title>
|
||||
@ -200,8 +202,9 @@
|
||||
to the new directory <code>/bar/</code>, you can instruct clients
|
||||
to request the content at the new location as follows:</p>
|
||||
|
||||
<example>Redirect permanent /foo/
|
||||
http://www.example.com/bar/</example>
|
||||
<highlight language="config">
|
||||
Redirect permanent /foo/ http://www.example.com/bar/
|
||||
</highlight>
|
||||
|
||||
<p>This will redirect any URL-Path starting in
|
||||
<code>/foo/</code> to the same URL path on the
|
||||
@ -215,14 +218,16 @@
|
||||
for the site home page to a different site, but leave all other
|
||||
requests alone, use the following configuration:</p>
|
||||
|
||||
<example>RedirectMatch permanent ^/$
|
||||
http://www.example.com/startpage.html</example>
|
||||
<highlight language="config">
|
||||
RedirectMatch permanent ^/$ http://www.example.com/startpage.html
|
||||
</highlight>
|
||||
|
||||
<p>Alternatively, to temporarily redirect all pages on one site
|
||||
to a particular page on another site, use the following:</p>
|
||||
|
||||
<example>RedirectMatch temp .*
|
||||
http://othersite.example.com/startpage.html</example>
|
||||
<highlight language="config">
|
||||
RedirectMatch temp .* http://othersite.example.com/startpage.html
|
||||
</highlight>
|
||||
</section>
|
||||
|
||||
<section id="proxy"><title>Reverse Proxy</title>
|
||||
@ -240,12 +245,12 @@ the <code>/bar/</code> directory on <code>internal.example.com</code>
|
||||
and returns them to the client as if they were from the local
|
||||
server.</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
ProxyPass /foo/ http://internal.example.com/bar/<br />
|
||||
ProxyPassReverse /foo/ http://internal.example.com/bar/<br />
|
||||
ProxyPassReverseCookieDomain internal.example.com public.example.com<br />
|
||||
ProxyPassReverseCookiePath /foo/ /bar/
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>The <directive module="mod_proxy">ProxyPass</directive> configures
|
||||
the server to fetch the appropriate documents, while the
|
||||
@ -264,11 +269,11 @@ breaking out of the proxy server and requesting directly from
|
||||
content) in a page as it is being served to the client using
|
||||
<module>mod_substitute</module>.</p>
|
||||
|
||||
<example>
|
||||
<highlight language="config">
|
||||
Substitute s/internal\.example\.com/www.example.com/i
|
||||
</example>
|
||||
</highlight>
|
||||
|
||||
<p>For more sophisticated rewriting of links in HTML and XHTML, the
|
||||
<p>For more sophisticated rewriting of links in HTML and XHTML, the
|
||||
<module>mod_proxy_html</module> module is also available. It allows you
|
||||
to create maps of URLs that need to be rewritten, so that complex
|
||||
proxying scenarios can be handled.</p>
|
||||
|
Reference in New Issue
Block a user