diff options
Diffstat (limited to 'docs/manual/urlmapping.html')
-rwxr-xr-x | docs/manual/urlmapping.html | 253 |
1 files changed, 0 insertions, 253 deletions
diff --git a/docs/manual/urlmapping.html b/docs/manual/urlmapping.html deleted file mode 100755 index 47e4873162..0000000000 --- a/docs/manual/urlmapping.html +++ /dev/null @@ -1,253 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> -<HTML> -<HEAD> -<TITLE>Mapping URLs to Filesystem Locations - Apache HTTP Server</TITLE> -</HEAD> - -<!-- Background white, links blue (unvisited), navy (visited), red (active) --> -<BODY - BGCOLOR="#FFFFFF" - TEXT="#000000" - LINK="#0000FF" - VLINK="#000080" - ALINK="#FF0000" -> -<!--#include virtual="header.html" --> -<h1 align="center">Mapping URLs to Filesystem Locations</h1> - -<p>This document explains the method in which Apache determines -what filesystem location to serve a file from based on the -URL of a request.</p> - -<ul> -<li><a href="#documentroot">DocumentRoot</a></li> -<li><a href="#outside">Files Outside the DocumentRoot</a></li> -<li><a href="#user">User Directories</a></li> -<li><a href="#redirect">URL Redirection</a></li> -<li><a href="#rewrite">Rewrite Engine</a></li> -<li><a href="#notfound">File Not Found</a></li> -</ul> - -<hr> - -<table border="1"> -<tr><td valign="top"> -<strong>Related Modules</strong><br><br> - -<a href="mod/mod_alias.html">mod_alias</a><br> -<a href="mod/mod_rewrite.html">mod_rewrite</a><br> -<a href="mod/mod_userdir.html">mod_userdir</a><br> -<a href="mod/mod_speling.html">mod_speling</a><br> -<a href="mod/mod_vhost_alias.html">mod_vhost_alias</a><br> - -</td><td valign="top"> -<strong>Related Directives</strong><br><br> - -<A HREF="mod/mod_alias.html#alias">Alias</A><br> -<A HREF="mod/mod_alias.html#aliasmatch">AliasMatch</A><br> -<A HREF="mod/mod_speling.html#checkspelling">CheckSpelling</A><br> -<A HREF="mod/core.html#documentroot">DocumentRoot</A><br> -<A HREF="mod/core.html#errordocument">ErrorDocument</A><br> -<a href="mod/core.html#options">Options</a><br> -<A HREF="mod/mod_alias.html#redirect">Redirect</A><br> -<A HREF="mod/mod_alias.html#redirectmatch">RedirectMatch</A><br> -<A HREF="mod/mod_rewrite.html#RewriteCond">RewriteCond</A><br> -<A HREF="mod/mod_rewrite.html#RewriteRule">RewriteRule</A><br> -<A HREF="mod/mod_alias.html#scriptalias">ScriptAlias</A><br> -<A HREF="mod/mod_alias.html#scriptaliasmatch">ScriptAliasMatch</A><br> -<A HREF="mod/mod_userdir.html#userdir">UserDir</A><br> - -</td></tr></table> - -<h2><a name="documentroot">DocumentRoot</a></h2> - -<p>In deciding what file to serve for a given request, Apache's -default behavior is to take the URL-Path for the request (the part of -the URL following the first single slash) and add it to the end of the -<a href="mod/core.html#documentroot">DocumentRoot</a> specified in -your configuration files. Therefore, the files and directories -underneath the <code>DocumentRoot</code> make up the basic document -tree which will be visible from the web.</p> - -<p>Apache is also capable of <a href="vhosts/">Virtual Hosting</a>, -where the server receives requests for more than one host. In this -case, a different <code>DocumentRoot</code> can be specified for each -virtual host, or alternatively, the directives provided by the module -<a href="mod/mod_vhost_alias.html">mod_vhost_alias</a> can be used to -dynamically determine the appropriate place from which to serve -content based on the requested IP address or hostname.</p> - -<h2><a name="outside">Files Outside the DocumentRoot</a></h2> - -<p>There are frequently circumstances where it is necessary to allow -web access to parts of the filesystem which are not strictly -underneath the <a href="mod/core.html#documentroot">DocumentRoot</a>. -Apache offers several different ways to accomplish this. On Unix -systems, symbolic links can be used to bring other parts of the -filesystem under the <code>DocumentRoot</code>. For security reasons, -symbolic links will only be followed if the <a -href="mod/core.html#options">Options</a> setting for the relevant -directory includes <code>FollowSymLinks</code> or -<code>SymLinksIfOwnerMatch</code>.</p> - -<p>Alternatively, the <a href="mod/mod_alias.html#alias">Alias</a> -directive can be used to map any part of the filesystem into the web -space. For example, with</p> - -<blockquote><code>Alias /docs /var/web/ -</blockquote></code> - -<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 <a -href="mod/mod_alias.html#scriptalias">ScriptAlias</a> directive works -the same way, with the additional effect that all content located at -the target path is treated as CGI scripts.</p> - -<p>For situations where additional flexibility is required, the <a -href="mod/mod_alias.html#aliasmatch">AliasMatch</a> and <a -href="mod/mod_alias.html#scriptaliasmatch">ScriptAliasMatch</a> -directives can do powerful <a -href="misc/FAQ.html#regex">regular-expression</a> based matching and -substitution. For example,</p> - -<blockquote><code> ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) -/home/$1/cgi-bin/$2 </code></blockquote> - -<p>will map a request to -<code>http://example.com/~user/cgi-bin/script.cgi</code> to the path -<code>/home/user/cgi-bin/script.cgi</code> and will treat the -resulting file as a CGI script.</p> - -<h2><a name="user">User Directories</a></h2> - -<p>Traditionally on Unix systems, the home directory of a particular -<em>user</em> can be referred to as <code>~user/</code>. The module -<a href="mod/mod_userdir.html">mod_userdir</a> extends this idea to -the web by allowing files under each user's home directory to be -accessed using URLs such as the following.</p> - -<blockquote><code>http://www.example.com/~user/file.html</code></blockquote> - -<p>For security reasons, it would be inappropriate to give direct -access to a user's home directory from the web. Therefore, the <a -href="mod/mod_userdir.html#userdir">UserDir</a> directive is used to -specify a directory underneath the user's home directory where web -files will be located. Using the default setting of <code>Userdir -public_html</code>, the above URL would look for a file at a directory -like <code>/home/user/public_html/file.html</code> where the -</code>/home/user/</code> is the user's home directory as specified in -<code>/etc/passwd</code>.</p> - -<p>There are also several other forms of the <code>Userdir</code> -directive which can be used on systems where <code>/etc/passwd</code> -cannot be used to find the location of the home directory.</p> - -<p>Some people find the "~" symbol (which is often encoded on the web -as <code>%7e</code>) to be awkward and prefer to use an alternate -string to represent user directories. This functionality is not -supported by mod_userdir. However, if users' home directories are -structured in a regular way, then it is possible to use the <a -href="mod/mod_alias.html#aliasmatch">AliasMatch</a> directive to -achieve the desired effect. For example, to make -<code>http://www.example.com/upages/user/file.html</code> map to -<code>/home/user/public_html/file.html</code>, the following -<code>AliasMatch</code> directive can be used.</p> - -<blockquote><code> -AliasMatch ^/upages/([^/]*)/?(.*) /home/$1/public_html/$2 -</code></blockquote> - -<h2><a name="redirect">URL Redirection</a></h2> - -<p>The configuration directives discussed in the above sections are -used to tell Apache to get content from a specific place in the -filesystem and return it to the client. Sometimes, it is desirable -instead to inform the client that the content being requested is -located at an different URL, and instruct the client to make a new -request with the new URL. This is referred to as <em>redirection</em> -and is implemented by the <a -href="mod/mod_alias.html#redirect">Redirect</a> directive. For example, -if the contents of the directory <code>/foo/</code> under the -<code>DocumentRoot</code> have been moved to the new directory -<code>/bar/</code>, clients can instructed to request the content at -the new location as follows.</p> - -<blockquote><code>Redirect permanent -/foo/ http://www.example.com/bar/</code></blockquote> - -<p>This will redirect any URL-Path starting in <code>/foo/</code> to -the same URL path on the <code>www.example.com</code> server with -<code>/bar/</code> substituted for <code>/foo/</code>. Note that -clients can be redirected to any server, not only the origin -server.</p> - -<p>Apache also provides a <a -href="mod/mod_alias.html#redirectmatch">RedirectMatch</a> directive -which can be used for more complicated rewriting problems. For -example, to redirect requests for the site home page to a different -site, but leave all other requests alone, the following configuration -can be used.</p> - -<blockquote><code> -RedirectMatch permanent ^/$ http://www.example.com/startpage.html -</code></blockquote> - -<p>Alternatively, to temporarily redirect all pages on a site to one -particular page, the following configuration is useful.</p> - -<blockquote><code> -RedirectMatch temp .* http://www.example.com/startpage.html -</code></blockquote> - -<h2><a name="rewrite">Rewriting Engine</a></h2> - -<p>When even more powerful substitution is required, the rewriting -engine provided by <a href="mod/mod_rewrite.html">mod_rewrite</a> can -be useful. The directives provided by this module can use -characteristics of the request such as browser type or source IP -address in deciding from where to serve content. In addition, -mod_rewrite can use external database files or programs to determine -how to handle a request. Many practical examples employing -mod_rewrite are discussed in the <a href="misc/rewriteguide.html">URL -Rewriting Guide</a>.</p> - -<h2><a name="notfound">File Not Found</a></h2> - -<p>Inevitably, URLs will be requested for which no matching file can -be found in the filesystem. This can happen for several reasons. In -some cases, it can be a result of moving documents from one location -to another. In this case, it is best to use <a href="#redirect">URL -redirection</a> to inform clients of the new location of the resource. -In this way, you can assure that old bookmarks and links will continue -to work, even though the resource is at a new location.</p> - -<p>Another common cause of "File Not Found" errors is accidental -mistyping of URLs, either directly in the browser, or in HTML links. -Apache provides the module <a href="mod/mod_speling">mod_speling</a> -(sic) to help with this problem. When this module is activated, it -will intercept "File Not Found" errors and look for a resource with a -similar filename. If one such file is found, mod_speling will send an -HTTP redirect to the client informing it of the correct location. If -several "close" files are found, a list of available alternatives will -be presented to the client.</p> - -<p>An especially useful feature of mod_speling, is that it will -compare filenames without respect to case. This can be useful for -systems where users are unaware of the case-sensitive nature of URLs -and the unix filesystem. However, using mod_speling for anything more -than the occasional URL correction can lead to additional load on the -server, since each "incorrect" request is followed by a URL -redirection and a new request from the client.</p> - -<p>If all attempts to locate the content fail, Apache returns an error -page with HTTP status code 404 (file not found). The appearance of -this page is controlled with the <a -href="mod/core.html#errordocument">ErrorDocument</a> directive and can -be customized in a flexible manner as discussed in the <a -href="custom-error.html">Custom error responses</a> and <a -href="misc/custom_errordocs.html">International Server Error -Responses</a> documents.</p> - -<!--#include virtual="footer.html" --> -</BODY> -</HTML> |