+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.5 $ ($Date: 2001/02/28 03:35:59 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="1"><STRONG>Background</STRONG>
- <OL>
- <LI><A HREF="#what">What is Apache?</A>
- </LI>
- <LI><A HREF="#why">How and why was Apache created?</A>
- </LI>
- <LI><A HREF="#name">Why the name "Apache"?</A>
- </LI>
- <LI><A HREF="#compare">OK, so how does Apache compare to other servers?</A>
- </LI>
- <LI><A HREF="#tested">How thoroughly tested is Apache?</A>
- </LI>
- <LI><A HREF="#future">What are the future plans for Apache?</A>
- </LI>
- <LI><A HREF="#support">Whom do I contact for support?</A>
- </LI>
- <LI><A HREF="#more">Is there any more information on Apache?</A>
- </LI>
- <LI><A HREF="#where">Where can I get Apache?</A>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
- <H3>A. Background</H3>
-<OL>
- <LI><A NAME="what">
- <STRONG>What is Apache?</STRONG>
- </A>
- <P>The Apache httpd server</P>
-
-<UL>
- <LI>is a powerful, flexible, HTTP/1.1 compliant web server
- <LI>implements the latest protocols, including HTTP/1.1 (RFC2616)
- <LI>is highly configurable and extensible with third-party modules
- <LI>can be customised by writing 'modules' using the Apache module API
- <LI>provides full source code and comes with an unrestrictive license
- <LI>runs on Windows NT/9x, Netware 5.x, OS/2, and most versions of Unix,
- as well as several other operating systems
- <LI>is actively being developed
- <LI>encourages user feedback through new ideas, bug reports and patches
- <LI>implements many frequently requested features, including:<BR><BR>
- <DL>
- <DT>DBM databases for authentication</DT>
- <DD>allows you to easily set up password-protected pages with
- enormous numbers of authorized users, without bogging down the server.
- <DT>Customized responses to errors and problems</DT>
- <DD>Allows you to set up files, or even CGI scripts, which are
- returned by the server in response
- to errors and problems, e.g. setup a script to intercept
- <STRONG>500 Server Error</STRONG>s and perform on-the-fly diagnostics for
- both users and yourself. </DD>
- <DT> Multiple DirectoryIndex directives </DT>
- <DD> Allows you to say <CODE>DirectoryIndex index.html
- index.cgi</CODE>, which instructs the server to either send
- back <CODE>index.html</CODE> or run <CODE>index.cgi</CODE>
- when a directory URL is requested, whichever it finds in the
- directory.
- <DT> Unlimited flexible URL rewriting and aliasing </DT>
- <DD> Apache has no fixed limit on the numbers of Aliases and
- Redirects which may be declared in the config files. In addition,
- a powerful rewriting engine can be used to solve most URL
- manipulation problems.
- <DT>Content negotiation</DT>
- <DD>i.e. the ability to automatically serve clients of varying
- sophistication and HTML level compliance, with documents which
- offer the best representation of information that the client is
- capable of accepting.</DD>
- <DT>Virtual Hosts</DT>
- <DD>A much requested feature, sometimes known as multi-homed servers.
- This allows the server to distinguish between requests made to
- different IP addresses or names (mapped to the same machine). Apache
- also offers dynamically configurable mass-virtual hosting.
- </DD>
- <DT>Configurable Reliable Piped Logs</DT>
- <DD>You can configure
- Apache to generate logs in the format that you want. In addition, on
- most Unix architectures, Apache can send log files to a pipe, allowing
- for log rotation, hit filtering, real-time splitting of multiple vhosts
- into separate logs, and asynchronous DNS resolving on the fly.
- </DL>
-</UL>
-
- <HR>
- </LI>
-
- <LI><A NAME="why">
- <STRONG>How and why was Apache created?</STRONG>
- </A>
- <P>
- The <A HREF="http://www.apache.org/ABOUT_APACHE.html">About Apache</A>
- document explains how the Apache project evolved from its beginnings
- as an outgrowth of the NCSA httpd project to its current status as
- one of the fastest, most efficient, and most functional web servers
- in existence.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="name">
- <STRONG>Why the name "Apache"?</STRONG>
- </A>
- <P>
- A cute name which stuck. Apache is "<STRONG>A
- PA</STRONG>t<STRONG>CH</STRONG>y server". It was
- based on some existing code and a series of "patch files".
- </P>
-
- <P>
- For many developers it is also a reverent connotation to the Native
- American Indian tribe of Apache, <A
- HREF="http://www.indians.org/welker/apache.htm">well-known for their
- superior skills in warfare strategy and inexhaustible endurance</A>.
- Online information about the Apache Nation is tough to locate; we
- suggest searching
- <A HREF="http://www.google.com/search?q=Apache+Nation">Google</A>,
- <A HREF="http://www.northernlight.com/nlquery.fcg?qr=Apache+Nation">Northernlight</A>,
- <A HREF="http://infoseek.go.com/Titles?qt=Apache+Nation">Infoseek</A>, or
- <A HREF="http://www.alltheweb.com/cgi-bin/asearch?query=Apache+Nation">AllTheWeb</A>.
- </P>
- <P>
- In addition, <A
- HREF="http://www.indian.org/">http://www.indian.org/</A> and <A
- HREF="http://www.nativeweb.com/">http://www.nativeweb.com/</A> are
- two excellent resources for Native American information.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="compare">
- <STRONG>OK, so how does Apache compare to other servers?</STRONG>
- </A>
- <P>
- For an independent assessment, see
- <A HREF="http://webcompare.internet.com/chart.html">Web Compare</A>'s
- comparison chart.
- </P>
- <P>
- Apache has been shown to be substantially faster, more stable, and
- more feature-full than many other web servers. Although certain
- commercial servers have claimed to surpass Apache's speed (it has
- not been demonstrated that any of these "benchmarks" are a
- good way of measuring WWW server speed at any rate), we feel that it
- is better to have a mostly-fast free server than an extremely-fast
- server that costs thousands of dollars. Apache is run on sites that
- get millions of hits per day, and they have experienced no
- performance difficulties.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="tested">
- <STRONG>How thoroughly tested is Apache?</STRONG>
- </A>
- <P>
- Apache is run on over 6 million Internet servers (as of February
- 2000). It has been tested thoroughly by both developers and
- users. The Apache Group maintains rigorous standards before
- releasing new versions of their server, and our server runs without
- a hitch on over one half of all WWW servers available on the
- Internet. When bugs do show up, we release patches and new versions
- as soon as they are available.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="future">
- <STRONG>What are the future plans for Apache?</STRONG>
- </A>
- <P>
- <UL>
- <LI>to continue to be an "open source" no-charge-for-use HTTP server,
- </LI>
- <LI>to keep up with advances in HTTP protocol and web developments in
- general,
- </LI>
- <LI>to collect suggestions for fixes/improvements from its users,
- </LI>
- <LI>to respond to needs of large volume providers as well as
- occasional users.
- </LI>
- </UL>
- <P></P>
- <HR>
- </LI>
-
- <LI><A NAME="support">
- <STRONG>Whom do I contact for support?</STRONG>
- </A>
- <P>
- There is no official support for Apache. None of the developers want to
- be swamped by a flood of trivial questions that can be resolved elsewhere.
- Bug reports and suggestions should be sent <EM>via</EM>
- <A HREF="http://www.apache.org/bug_report.html">the bug report page</A>.
- Other questions should be directed to the
- <A HREF="news:comp.infosystems.www.servers.unix"
- >comp.infosystems.www.servers.unix</A> or <A HREF=
- "news:comp.infosystems.www.servers.ms-windows"
- >comp.infosystems.www.servers.ms-windows</A>
- newsgroup (as appropriate for the platform you use), where some of the
- Apache team lurk, in the company of many other httpd gurus who
- should be able to help.
- </P>
- <P>
- Commercial support for Apache is, however, available from a number
- of third parties.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="more">
- <STRONG>Is there any more information available on
- Apache?</STRONG>
- </A>
- <P>
- Indeed there is. See the main
- <A HREF="http://www.apache.org/httpd">Apache web site</A>.
- There is also a regular electronic publication called
- <A HREF="http://www.apacheweek.com/" REL="Help"><CITE>Apache Week</CITE></A>
- available. Links to relevant <CITE>Apache Week</CITE> articles are
- included below where appropriate. There are also some
- <A HREF="http://www.apache.org/info/apache_books.html"
- >Apache-specific books</A> available.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="where">
- <STRONG>Where can I get Apache?</STRONG>
- </A>
- <P>
- You can find out how to download the source for Apache at the
- project's
- <A HREF="http://www.apache.org/httpd">main web page</A>.
- </P>
- <HR>
- </LI>
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.8 $ ($Date: 2001/08/22 18:23:09 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI value="2"><STRONG>General Technical Questions</STRONG>
- <OL>
- <LI><A HREF="#what2do">"Why can't I ...? Why won't ...
- work?" What to do in case of problems</A>
- </LI>
- <LI><A HREF="#compatible">How compatible is Apache with my existing
- NCSA 1.3 setup?</A>
- </LI>
- <LI><A HREF="#year2000">Is Apache Year 2000 compliant?</A>
- </LI>
- <LI><A HREF="#submit_patch">How do I submit a patch to the Apache Group?</A>
- </LI>
- <LI><A HREF="#domination">Why has Apache stolen my favourite site's
- Internet address?</A>
- </LI>
- <LI><A HREF="#apspam">Why am I getting spam mail from the Apache site?</A>
- </LI>
- <LI><A HREF="#redist">May I include the Apache software on a CD or other
- package I'm distributing?</A>
- </LI>
- <LI><A HREF="#zoom">What's the best hardware/operating system/... How do
- I get the most out of my Apache Web server?</A>
- </LI>
- <LI><A HREF="#regex">What are "regular expressions"?</A>
- </LI>
- <li><a href="#binaries">Why isn't there a binary for my platform?</a></li>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>B. General Technical Questions</H3>
-<OL>
-
- <LI><A NAME="what2do">
- <STRONG>"Why can't I ...? Why won't ... work?" What to
- do in case of problems</STRONG>
- </A>
- <P>
- If you are having trouble with your Apache server software, you should
- take the following steps:
- </P>
- <OL>
- <LI><STRONG>Check the errorlog!</STRONG>
- <P>
- Apache tries to be helpful when it encounters a problem. In many
- cases, it will provide some details by writing one or messages to
- the server error log. Sometimes this is enough for you to diagnose
- & fix the problem yourself (such as file permissions or the like).
- The default location of the error log is
- <SAMP>/usr/local/apache/logs/error_log</SAMP>, but see the
- <A HREF="../mod/core.html#errorlog"><SAMP>ErrorLog</SAMP></A>
- directive in your config files for the location on your server.
- </P>
- </LI>
- <LI><STRONG>Check the
- <A HREF="http://httpd.apache.org/docs/misc/FAQ.html">FAQ</A>!</STRONG>
- <P>
- The latest version of the Apache Frequently-Asked Questions list can
- always be found at the main Apache web site.
- </P>
- </LI>
- <LI><STRONG>Check the Apache bug database</STRONG>
- <P>
- Most problems that get reported to The Apache Group are recorded in
- the
- <A HREF="http://bugs.apache.org/">bug database</A>.
- <EM><STRONG>Please</STRONG> check the existing reports, open
- <STRONG>and</STRONG> closed, before adding one.</EM> If you find
- that your issue has already been reported, please <EM>don't</EM> add
- a "me, too" report. If the original report isn't closed
- yet, we suggest that you check it periodically. You might also
- consider contacting the original submitter, because there may be an
- email exchange going on about the issue that isn't getting recorded
- in the database.
- </P>
- </LI>
- <LI><STRONG>Ask in the <SAMP>comp.infosystems.www.servers.unix</SAMP>
- or <SAMP>comp.infosystems.www.servers.ms-windows</SAMP> USENET
- newsgroup (as appropriate for the platform you use).</STRONG>
- <P>
- A lot of common problems never make it to the bug database because
- there's already high Q&A traffic about them in the
- <A HREF="news:comp.infosystems.www.servers.unix"
- ><SAMP>comp.infosystems.www.servers.unix</SAMP></A>
- newsgroup. Many Apache users, and some of the developers, can be
- found roaming its virtual halls, so it is suggested that you seek
- wisdom there. The chances are good that you'll get a faster answer
- there than from the bug database, even if you <EM>don't</EM> see
- your question already posted.
- </P>
- </LI>
- <LI><STRONG>If all else fails, report the problem in the bug
- database</STRONG>
- <P>
- If you've gone through those steps above that are appropriate and
- have obtained no relief, then please <EM>do</EM> let The Apache
- Group know about the problem by
- <A HREF="http://httpd.apache.org/bug_report.html">logging a bug report</A>.
- </P>
- <P>
- If your problem involves the server crashing and generating a core
- dump, please include a backtrace (if possible). As an example,
- </P>
- <P>
- <DL>
- <DD><CODE># cd <EM>ServerRoot</EM><BR>
- # dbx httpd core<BR>
- (dbx) where</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- (Substitute the appropriate locations for your
- <SAMP>ServerRoot</SAMP> and your <SAMP>httpd</SAMP> and
- <SAMP>core</SAMP> files. You may have to use <CODE>gdb</CODE>
- instead of <CODE>dbx</CODE>.)
- </P>
- </LI>
- </OL>
- <HR>
- </LI>
-
- <LI><A NAME="compatible">
- <STRONG>How compatible is Apache with my existing NCSA 1.3
- setup?</STRONG>
- </A>
- <P>
- Apache attempts to offer all the features and configuration options
- of NCSA httpd 1.3, as well as many of the additional features found in
- NCSA httpd 1.4 and NCSA httpd 1.5.
- </P>
- <P>
- NCSA httpd appears to be moving toward adding experimental features
- which are not generally required at the moment. Some of the experiments
- will succeed while others will inevitably be dropped. The Apache
- philosophy is to add what's needed as and when it is needed.
- </P>
- <P>
- Friendly interaction between Apache and NCSA developers should ensure
- that fundamental feature enhancements stay consistent between the two
- servers for the foreseeable future.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="year2000">
- <STRONG>Is Apache Year 2000 compliant?</STRONG>
- </A>
- <P>
- Yes, Apache is Year 2000 compliant.
- </P>
- <P>
- Apache internally never stores years as two digits.
- On the HTTP protocol level RFC1123-style addresses are generated
- which is the only format a HTTP/1.1-compliant server should
- generate. To be compatible with older applications Apache
- recognizes ANSI C's <CODE>asctime()</CODE> and
- RFC850-/RFC1036-style date formats, too.
- The <CODE>asctime()</CODE> format uses four-digit years,
- but the RFC850 and RFC1036 date formats only define a two-digit year.
- If Apache sees such a date with a value less than 70 it assumes that
- the century is <SAMP>20</SAMP> rather than <SAMP>19</SAMP>.
- </P>
- <P>
- Although Apache is Year 2000 compliant, you may still get problems
- if the underlying OS has problems with dates past year 2000
- (<EM>e.g.</EM>, OS calls which accept or return year numbers).
- Most (UNIX) systems store dates internally as signed 32-bit integers
- which contain the number of seconds since 1<SUP>st</SUP> January 1970, so
- the magic boundary to worry about is the year 2038 and not 2000.
- But modern operating systems shouldn't cause any trouble
- at all.
- </P>
- <p>
- The Apache HTTP Server project is an open-source software product of
- the Apache Software Foundation. The project and the Foundation
- <b>cannot</b> offer legal assurances regarding any suitability
- of the software for your application. There are several commercial
- Apache support organizations and derivative server products available
- that may be able to stand behind the software and provide you with
- any assurances you may require. You may find links to some of these
- vendors at
- <samp><<a href="http://httpd.apache.org/info/support.cgi"
- >http://httpd.apache.org/info/support.cgi</a>></samp>.
- </p>
- <p>
- The Apache HTTP server software is distributed with the following
- disclaimer, found in the software license:
- </p>
- <pre>
- THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
- EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
- ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- OF THE POSSIBILITY OF SUCH DAMAGE.
- </pre>
- <HR>
- </LI>
-
- <LI><A NAME="submit_patch">
- <STRONG>How do I submit a patch to the Apache Group?</STRONG></A>
- <P>
- The Apache Group encourages patches from outside developers. There
- are 2 main "types" of patches: small bugfixes and general
- improvements. Bugfixes should be submitting using the Apache <A
- HREF="http://httpd.apache.org/bug_report.html">bug report page</A>.
- Improvements, modifications, and additions should follow the
- instructions below.
- </P>
- <P>
- In general, the first course of action is to be a member of the
- <SAMP>dev@httpd.apache.org</SAMP> mailing list. This indicates to
- the Group that you are closely following the latest Apache
- developments. Your patch file should be generated using either
- '<CODE>diff -c</CODE>' or '<CODE>diff -u</CODE>' against
- the latest CVS tree. To submit your patch, send email to
- <SAMP>dev@httpd.apache.org</SAMP> with a <SAMP>Subject:</SAMP> line
- that starts with <SAMP>[PATCH]</SAMP> and includes a general
- description of the patch. In the body of the message, the patch
- should be clearly described and then included at the end of the
- message. If the patch-file is long, you can note a URL to the file
- instead of the file itself. Use of MIME enclosures/attachments
- should be avoided.
- </P>
- <P>
- Be prepared to respond to any questions about your patches and
- possibly defend your code. If your patch results in a lot of
- discussion, you may be asked to submit an updated patch that
- incorporate all changes and suggestions.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="domination"><STRONG>Why has Apache stolen my favourite site's
- Internet address?</STRONG></A>
- <P>
- The simple answer is: "It hasn't." This misconception is usually
- caused by the site in question having migrated to the Apache Web
- server software, but not having migrated the site's content yet. When
- Apache is installed, the default page that gets installed tells the
- Webmaster the installation was successful. The expectation is that
- this default page will be replaced with the site's real content.
- If it doesn't, complain to the Webmaster, not to the Apache project --
- we just make the software and aren't responsible for what people
- do (or don't do) with it.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="apspam"><STRONG>Why am I getting spam mail from the
- Apache site?</STRONG></A>
- <P>
- The short answer is: "You aren't." Usually when someone thinks the
- Apache site is originating spam, it's because they've traced the
- spam to a Web site, and the Web site says it's using Apache. See the
- <A HREF="#domination">previous FAQ entry</A> for more details on this
- phenomenon.
- </P>
- <P>
- No marketing spam originates from the Apache site. The only mail
- that comes from the site goes only to addresses that have been
- <EM>requested</EM> to receive the mail.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="redist"><STRONG>May I include the Apache software on a
- CD or other package I'm distributing?</STRONG></A>
- <P>
- The detailed answer to this question can be found in the
- Apache license, which is included in the Apache distribution in
- the file <CODE>LICENSE</CODE>. You can also find it on the Web at
- <SAMP><<A HREF="http://www.apache.org/LICENSE.txt"
- >http://www.apache.org/LICENSE.txt</A>></SAMP>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="zoom">
- <STRONG>What's the best hardware/operating system/... How do
- I get the most out of my Apache Web server?</STRONG>
- </A>
- <P>
- Check out Dean Gaudet's
- <A HREF="perf-tuning.html">performance tuning page</A>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="regex">
- <STRONG>What are "regular expressions"?</STRONG></A>
- <P>
- Regular expressions are a way of describing a pattern - for example, "all
- the words that begin with the letter A" or "every 10-digit phone number"
- or even "Every sentence with two commas in it, and no capital letter Q".
- Regular expressions (aka "regex"s) are useful in Apache because they
- let you apply certain attributes against collections of files or resources
- in very flexible ways - for example, all .gif and .jpg files under
- any "images" directory could be written as /\/images\/.*(jpg|gif)$/.
- </P>
- <P>
- The best overview around is probably the one which comes with Perl.
- We implement a simple subset of Perl's regex support, but it's
- still a good way to learn what they mean. You can start by going
- to the <A
- HREF="http://www.perl.com/CPAN-local/doc/manual/html/pod/perlre.html#Regular_Expressions"
- >CPAN page on regular expressions</A>, and branching out from
- there.
- </P>
- <HR>
- </LI>
-
- <li><a name="binaries">
- <b>Why isn't there a binary for my platform?</b></a>
- <p>
- The developers make sure that the software builds and works
- correctly on the platforms available to them; this does
- <i>not</i> necessarily mean that <i>your</i> platform
- is one of them. In addition, the Apache HTTP server project
- is primarily source oriented, meaning that distributing
- valid and buildable source code is the purpose of a release,
- not making sure that there is a binary package for all of the
- supported platforms.
- </p>
- <p>
- If you don't see a kit for your platform listed in the
- binary distribution area
- (<URL:<a href="http://httpd.apache.org/dist/httpd/binaries/"
- >http://httpd.apache.org/dist/httpd/binaries/</a>>),
- it means either that the platform isn't available to any of
- the developers, or that they just haven't gotten around to
- preparing a binary for it. As this is a voluntary project,
- they are under no obligation to do so. Users are encouraged
- and expected to build the software themselves.
- </p>
- <p>
- The sole exception to these practices is the Windows package.
- Unlike most Unix and Unix-like platforms, Windows systems
- do not come with a bundled software development environment,
- so we <i>do</i> prepare binary kits for Windows when we make
- a release. Again, however, it's a voluntary thing and only
- a limited number of the developers have the capability to build
- the InstallShield package, so the Windows release may lag
- somewhat behind the source release. This lag should be
- no more than a few days at most.
- </p>
- <hr>
- </li>
-
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.1 $ ($Date: 1999/06/24 15:02:51 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="3"><STRONG>Building Apache</STRONG>
- <OL>
- <LI><A HREF="#bind8.1">Why do I get an error about an undefined
- reference to "<SAMP>__inet_ntoa</SAMP>" or other
- <SAMP>__inet_*</SAMP> symbols?</A>
- </LI>
- <LI><A HREF="#cantbuild">Why won't Apache compile with my
- system's <SAMP>cc</SAMP>?</A>
- </LI>
- <LI><A HREF="#linuxiovec">Why do I get complaints about redefinition
- of "<CODE>struct iovec</CODE>" when compiling under Linux?</A>
- </LI>
- <LI><A HREF="#broken-gcc">I'm using gcc and I get some compilation errors,
- what is wrong?</A>
- </LI>
- <LI><A HREF="#glibc-crypt">I'm using RedHat Linux 5.0, or some other
- <SAMP>glibc</SAMP>-based Linux system, and I get errors with the
- <CODE>crypt</CODE> function when I attempt to build Apache 1.2.</A>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>C. Building Apache</H3>
-<OL>
-
- <LI><A NAME="bind8.1">
- <STRONG>Why do I get an error about an undefined reference to
- "<SAMP>__inet_ntoa</SAMP>" or other
- <SAMP>__inet_*</SAMP> symbols?</STRONG>
- </A>
- <P>
- If you have installed <A HREF="http://www.isc.org/bind.html">BIND-8</A>
- then this is normally due to a conflict between your include files
- and your libraries. BIND-8 installs its include files and libraries
- <CODE>/usr/local/include/</CODE> and <CODE>/usr/local/lib/</CODE>, while
- the resolver that comes with your system is probably installed in
- <CODE>/usr/include/</CODE> and <CODE>/usr/lib/</CODE>. If
- your system uses the header files in <CODE>/usr/local/include/</CODE>
- before those in <CODE>/usr/include/</CODE> but you do not use the new
- resolver library, then the two versions will conflict.
- </P>
- <P>
- To resolve this, you can either make sure you use the include files
- and libraries that came with your system or make sure to use the
- new include files and libraries. Adding <CODE>-lbind</CODE> to the
- <CODE>EXTRA_LDFLAGS</CODE> line in your <SAMP>Configuration</SAMP>
- file, then re-running <SAMP>Configure</SAMP>, should resolve the
- problem. (Apache versions 1.2.* and earlier use
- <CODE>EXTRA_LFLAGS</CODE> instead.)
- </P>
- <P>
- <STRONG>Note:</STRONG>As of BIND 8.1.1, the bind libraries and files are
- installed under <SAMP>/usr/local/bind</SAMP> by default, so you
- should not run into this problem. Should you want to use the bind
- resolvers you'll have to add the following to the respective lines:
- </P>
- <P>
- <DL>
- <DD><CODE>EXTRA_CFLAGS=-I/usr/local/bind/include
- <BR>
- EXTRA_LDFLAGS=-L/usr/local/bind/lib
- <BR>
- EXTRA_LIBS=-lbind</CODE>
- </DD>
- </DL>
- <P></P>
- <HR>
- </LI>
-
- <LI><A NAME="cantbuild">
- <STRONG>Why won't Apache compile with my system's
- <SAMP>cc</SAMP>?</STRONG>
- </A>
- <P>
- If the server won't compile on your system, it is probably due to one
- of the following causes:
- </P>
- <UL>
- <LI><STRONG>The <SAMP>Configure</SAMP> script doesn't recognize your system
- environment.</STRONG>
- <BR>
- This might be either because it's completely unknown or because
- the specific environment (include files, OS version, <EM>et
- cetera</EM>) isn't explicitly handled. If this happens, you may
- need to port the server to your OS yourself.
- </LI>
- <LI><STRONG>Your system's C compiler is garbage.</STRONG>
- <BR>
- Some operating systems include a default C compiler that is either
- not ANSI C-compliant or suffers from other deficiencies. The usual
- recommendation in cases like this is to acquire, install, and use
- <SAMP>gcc</SAMP>.
- </LI>
- <LI><STRONG>Your <SAMP>include</SAMP> files may be confused.</STRONG>
- <BR>
- In some cases, we have found that a compiler installation or system
- upgrade has left the C header files in an inconsistent state. Make
- sure that your include directory tree is in sync with the compiler and
- the operating system.
- </LI>
- <LI><STRONG>Your operating system or compiler may be out of
- revision.</STRONG>
- <BR>
- Software vendors (including those that develop operating systems)
- issue new releases for a reason; sometimes to add functionality, but
- more often to fix bugs that have been discovered. Try upgrading
- your compiler and/or your operating system.
- </LI>
- </UL>
- <P>
- The Apache Group tests the ability to build the server on many
- different platforms. Unfortunately, we can't test all of the OS
- platforms there are. If you have verified that none of the above
- issues is the cause of your problem, and it hasn't been reported
- before, please submit a
- <A HREF="http://www.apache.org/bug_report.html">problem report</A>.
- Be sure to include <EM>complete</EM> details, such as the compiler
- & OS versions and exact error messages.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="linuxiovec">
- <STRONG>Why do I get complaints about redefinition
- of "<CODE>struct iovec</CODE>" when
- compiling under Linux?</STRONG>
- </A>
- <P>
- This is a conflict between your C library includes and your kernel
- includes. You need to make sure that the versions of both are matched
- properly. There are two workarounds, either one will solve the problem:
- </P>
- <P>
- <UL>
- <LI>Remove the definition of <CODE>struct iovec</CODE> from your C
- library includes. It is located in <CODE>/usr/include/sys/uio.h</CODE>.
- <STRONG>Or,</STRONG>
- </LI>
- <LI>Add <CODE>-DNO_WRITEV</CODE> to the <CODE>EXTRA_CFLAGS</CODE>
- line in your <SAMP>Configuration</SAMP> and reconfigure/rebuild.
- This hurts performance and should only be used as a last resort.
- </LI>
- </UL>
- <P></P>
- <HR>
- </LI>
-
- <LI><A NAME="broken-gcc"><STRONG>I'm using gcc and I get some
- compilation errors, what is wrong?</STRONG></A>
- <P>
- GCC parses your system header files and produces a modified subset which
- it uses for compiling. This behaviour ties GCC tightly to the version
- of your operating system. So, for example, if you were running IRIX 5.3
- when you built GCC and then upgrade to IRIX 6.2 later, you will have to
- rebuild GCC. Similarly for Solaris 2.4, 2.5, or 2.5.1 when you upgrade
- to 2.6. Sometimes you can type "gcc -v" and it will tell you the version
- of the operating system it was built against.
- </P>
- <P>
- If you fail to do this, then it is very likely that Apache will fail
- to build. One of the most common errors is with <CODE>readv</CODE>,
- <CODE>writev</CODE>, or <CODE>uio.h</CODE>. This is <STRONG>not</STRONG> a
- bug with Apache. You will need to re-install GCC.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="glibc-crypt">
- <STRONG>I'm using RedHat Linux 5.0, or some other
- <SAMP>glibc</SAMP>-based Linux system, and I get errors with the
- <CODE>crypt</CODE> function when I attempt to build Apache 1.2.</STRONG>
- </A>
-
- <P>
- <SAMP>glibc</SAMP> puts the <CODE>crypt</CODE> function into a separate
- library. Edit your <CODE>src/Configuration</CODE> file and set this:
- </P>
- <DL>
- <DD><CODE>EXTRA_LIBS=-lcrypt</CODE>
- </DD>
- </DL>
- <P>
- Then re-run <SAMP>src/Configure</SAMP> and re-execute the make.
- </P>
- <HR>
- </LI>
-
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.8 $ ($Date: 2001/02/28 03:35:59 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="4"><STRONG>Error Log Messages and Problems Starting Apache</STRONG>
- <OL>
- <LI><A HREF="#setgid">Why do I get "<SAMP>setgid: Invalid
- argument</SAMP>" at startup?</A>
- </LI>
- <LI><A HREF="#nodelay">Why am I getting "<SAMP>httpd: could not
- set socket option TCP_NODELAY</SAMP>" in my error log?</A>
- </LI>
- <LI><A HREF="#peerreset">Why am I getting "<SAMP>connection
- reset by peer</SAMP>" in my error log?</A>
- </LI>
- <LI><A HREF="#wheres-the-dump">The errorlog says Apache dumped core,
- but where's the dump file?</A>
- </LI>
- <LI><A HREF="#linux-shmget">When I run it under Linux I get "shmget:
- function not found", what should I do?</A>
- </LI>
- <LI><A HREF="#nfslocking">Server hangs, or fails to start, and/or error log
- fills with "<SAMP>fcntl: F_SETLKW: No record locks
- available</SAMP>" or similar messages</A>
- </LI>
- <LI><A HREF="#aixccbug">Why am I getting "<SAMP>Expected </Directory>
- but saw </Directory></SAMP>" when I try to start Apache?</A>
- </LI>
- <LI><A HREF="#redhat">I'm using RedHat Linux and I have problems with httpd
- dying randomly or not restarting properly</A>
- </LI>
- <LI><A HREF="#stopping">I upgraded from an Apache version earlier
- than 1.2.0 and suddenly I have problems with Apache dying randomly
- or not restarting properly</A>
- </LI>
- <LI><A HREF="#setservername">When I try to start Apache from a DOS
- window, I get a message like "<samp>Cannot determine host name.
- Use ServerName directive to set it manually.</samp>" What does
- this mean?</A>
- </LI>
- <LI><A HREF="#ws2_32dll">When I try to start Apache for Windows, I get a message
- like "<samp>Unable To Locate WS2_32.DLL...</samp>". What should I do?</A>
- </LI>
- <LI><A HREF="#WSADuplicateSocket">Apache for Windows does not start.
- Error log contains this message "<samp>[crit] (10045) The attempted
- operation is not supported for the type of object referenced: Parent:
- WSADuplicateSocket failed for socket ###</samp>". What does this
- mean?</a>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>D. Error Log Messages and Problems Starting Apache</H3>
-<OL>
-
- <LI><A NAME="setgid">
- <STRONG>Why do I get "<SAMP>setgid: Invalid
- argument</SAMP>" at startup?</STRONG>
- </A>
- <P>
- Your
- <A HREF="../mod/mpm_common.html#group"><SAMP>Group</SAMP></A>
- directive (probably in <SAMP>conf/httpd.conf</SAMP>) needs to name a
- group that actually exists in the <SAMP>/etc/group</SAMP> file (or
- your system's equivalent). This problem is also frequently seen when
- a negative number is used in the <CODE>Group</CODE> directive
- (<EM>e.g.</EM>, "<CODE>Group #-1</CODE>"). Using a group name
- -- not group number -- found in your system's group database should
- solve this problem in all cases.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="nodelay">
- <STRONG>Why am I getting "<SAMP>httpd: could not set socket
- option TCP_NODELAY</SAMP>" in my error log?</STRONG>
- </A>
- <P>
- This message almost always indicates that the client disconnected
- before Apache reached the point of calling <CODE>setsockopt()</CODE>
- for the connection. It shouldn't occur for more than about 1% of the
- requests your server handles, and it's advisory only in any case.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="peerreset">
- <STRONG>Why am I getting "<SAMP>connection reset by
- peer</SAMP>" in my error log?</STRONG>
- </A>
- <P>
- This is a normal message and nothing about which to be alarmed. It simply
- means that the client canceled the connection before it had been
- completely set up - such as by the end-user pressing the "Stop"
- button. People's patience being what it is, sites with response-time
- problems or slow network links may experiences this more than
- high-capacity ones or those with large pipes to the network.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="wheres-the-dump">
- <STRONG>The errorlog says Apache dumped core, but where's the dump
- file?</STRONG>
- </A>
- <P>
- In Apache version 1.2, the error log message
- about dumped core includes the directory where the dump file should be
- located. However, many Unixes do not allow a process that has
- called <CODE>setuid()</CODE> to dump core for security reasons;
- the typical Apache setup has the server started as root to bind to
- port 80, after which it changes UIDs to a non-privileged user to
- serve requests.
- </P>
- <P>
- Dealing with this is extremely operating system-specific, and may
- require rebuilding your system kernel. Consult your operating system
- documentation or vendor for more information about whether your system
- does this and how to bypass it. If there <EM>is</EM> a documented way
- of bypassing it, it is recommended that you bypass it only for the
- <SAMP>httpd</SAMP> server process if possible.
- </P>
- <P>
- The canonical location for Apache's core-dump files is the
- <A HREF="../mod/core.html#serverroot">ServerRoot</A>
- directory. As of Apache version 1.3, the location can be set <EM>via</EM>
- the
- <A HREF="../mod/mpm_common.html#coredumpdirectory"
- ><SAMP>CoreDumpDirectory</SAMP></A>
- directive to a different directory. Make sure that this directory is
- writable by the user the server runs as (as opposed to the user the server
- is <EM>started</EM> as).
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="linux-shmget">
- <STRONG>When I run it under Linux I get "shmget:
- function not found", what should I do?</STRONG>
- </A>
- <P>
- Your kernel has been built without SysV IPC support. You will have
- to rebuild the kernel with that support enabled (it's under the
- "General Setup" submenu). Documentation for kernel
- building is beyond the scope of this FAQ; you should consult the <A
- HREF="http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html">Kernel
- HOWTO</A>, or the documentation provided with your distribution, or
- a <A HREF="http://www.redhat.com/mirrors/LDP/HOWTO/META-FAQ.html">Linux
- newsgroup/mailing list</A>. As a last-resort workaround, you can
- comment out the <CODE>#define USE_SHMGET_SCOREBOARD</CODE>
- definition in the <SAMP>LINUX</SAMP> section of
- <SAMP>src/conf.h</SAMP> and rebuild the server (prior to 1.3b4,
- simply removing <CODE>#define HAVE_SHMGET</CODE> would have
- sufficed). This will produce a server which is slower and less
- reliable.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="nfslocking">
- <STRONG>Server hangs, or fails to start, and/or error log
- fills with "<SAMP>fcntl: F_SETLKW: No record locks
- available</SAMP>" or similar messages</STRONG>
- </A>
-
- <P>
- These are symptoms of a fine locking problem, which usually means that
- the server is trying to use a synchronization file on an NFS filesystem.
- </P>
- <P>
- Because of its parallel-operation model, the Apache Web server needs to
- provide some form of synchronization when accessing certain resources.
- One of these synchronization methods involves taking out locks on a file,
- which means that the filesystem whereon the lockfile resides must support
- locking. In many cases this means it <EM>can't</EM> be kept on an
- NFS-mounted filesystem.
- </P>
- <P>
- To cause the Web server to work around the NFS locking limitations, include
- a line such as the following in your server configuration files:
- </P>
- <DL>
- <DD><CODE>LockFile /var/run/apache-lock</CODE>
- </DD>
- </DL>
- <P>
- The directory should not be generally writable (<EM>e.g.</EM>, don't use
- <SAMP>/var/tmp</SAMP>).
- See the <A HREF="../mod/mpm_common.html#lockfile"><SAMP>LockFile</SAMP></A>
- documentation for more information.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="aixccbug"><STRONG>Why am I getting "<SAMP>Expected
- </Directory> but saw </Directory></SAMP>" when
- I try to start Apache?</STRONG></A>
- <P>
- This is a known problem with certain versions of the AIX C compiler.
- IBM are working on a solution, and the issue is being tracked by
- <A HREF="http://bugs.apache.org/index/full/2312">problem report #2312</A>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="redhat">
- <STRONG>I'm using RedHat Linux and I have problems with httpd
- dying randomly or not restarting properly</STRONG>
- </A>
-
- <P>
- RedHat Linux versions 4.x (and possibly earlier) RPMs contain
- various nasty scripts which do not stop or restart Apache properly.
- These can affect you even if you're not running the RedHat supplied
- RPMs.
- </P>
- <P>
- If you're using the default install then you're probably running
- Apache 1.1.3, which is outdated. From RedHat's ftp site you can
- pick up a more recent RPM for Apache 1.2.x. This will solve one of
- the problems.
- </P>
- <P>
- If you're using a custom built Apache rather than the RedHat RPMs
- then you should <CODE>rpm -e apache</CODE>. In particular you want
- the mildly broken <CODE>/etc/logrotate.d/apache</CODE> script to be
- removed, and you want the broken <CODE>/etc/rc.d/init.d/httpd</CODE>
- (or <CODE>httpd.init</CODE>) script to be removed. The latter is
- actually fixed by the apache-1.2.5 RPMs but if you're building your
- own Apache then you probably don't want the RedHat files.
- </P>
- <P>
- We can't stress enough how important it is for folks, <EM>especially
- vendors</EM> to follow the <A HREF="../stopping.html">stopping Apache
- directions</A> given in our documentation. In RedHat's defense,
- the broken scripts were necessary with Apache 1.1.x because the
- Linux support in 1.1.x was very poor, and there were various race
- conditions on all platforms. None of this should be necessary with
- Apache 1.2 and later.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="stopping">
- <STRONG>I upgraded from an Apache version earlier
- than 1.2.0 and suddenly I have problems with Apache dying randomly
- or not restarting properly</STRONG>
- </A>
-
- <P>
- You should read <A HREF="#redhat">the previous note</A> about
- problems with RedHat installations. It is entirely likely that your
- installation has start/stop/restart scripts which were built for
- an earlier version of Apache. Versions earlier than 1.2.0 had
- various race conditions that made it necessary to use
- <CODE>kill -9</CODE> at times to take out all the httpd servers.
- But that should not be necessary any longer. You should follow
- the <A HREF="../stopping.html">directions on how to stop
- and restart Apache</A>.
- </P>
- <P>As of Apache 1.3 there is a script
- <CODE>src/support/apachectl</CODE> which, after a bit of
- customization, is suitable for starting, stopping, and restarting
- your server.
- </P>
- <HR>
- </LI>
-
- <LI><A name="setservername">
- <b>When I try to start Apache from a DOS
- window, I get a message like "<samp>Cannot determine host name.
- Use ServerName directive to set it manually.</samp>" What does
- this mean?</b></A>
-
- <p>
- It means what it says; the Apache software can't determine the
- hostname of your system. Edit your <samp>conf\httpd.conf</samp>
- file, look for the string "ServerName", and make sure there's an
- uncommented directive such as
- </p>
- <dl>
- <dd><code>ServerName localhost</code></dd>
- </dl>
- <p>
- or
- </p>
- <dl>
- <dd><code>ServerName www.foo.com</code></dd>
- </dl>
- <p>
- in the file. Correct it if there one there with wrong information, or
- add one if you don't already have one.
- </p>
- <p>
- Also, make sure that your Windows system has DNS enabled. See the TCP/IP
- setup component of the Networking or Internet Options control panel.
- </p>
- <p>
- After verifying that DNS is enabled and that you have a valid hostname
- in your <samp>ServerName</samp> directive, try to start the server
- again.
- </p>
- <hr>
- </LI>
- <LI><A name="ws2_32dll">
- <b>When I try to start Apache for Windows, I get a message
- like "<samp>Unable To Locate WS2_32.DLL...</samp>". What should I do?</b></A>
- <p>
- Short answer: You need to install Winsock 2, available from
- <A HREF="http://www.microsoft.com/windows95/downloads/">http://www.microsoft.com/windows95/downloads/</A>
- </p>
- <p>
- Detailed answer: Prior to version 1.3.9, Apache for Windows used Winsock 1.1. Beginning with
- version 1.3.9, Apache began using Winsock 2 features (specifically, WSADuplicateSocket()).
- WS2_32.DLL implements the Winsock 2 API. Winsock 2 ships with Windows NT 4.0 and Windows 98.
- Some of the earlier releases of Windows 95 did not include Winsock 2.
- </p>
- <hr>
- </LI>
- <LI><A name="WSADuplicateSocket">
- <b>Apache for Windows does not start. Error log contains this message:
- "<samp>[crit] (10045) The attempted operation is not supported for
- the type of object referenced: Parent: WSADuplicateSocket failed for
- socket ###</samp>". What does this mean?</b></A>
- <p>
- We have seen this problem when Apache is run on systems along with
- Virtual Private Networking clients like Aventail Connect. Aventail Connect
- is a Layered Service Provider (LSP) that inserts itself, as a "shim,"
- between the Winsock 2 API and Window's native Winsock 2 implementation.
- The Aventail Connect shim does not implement WSADuplicateSocket, which is
- the cause of the failure.
- </p>
- <p>
- The shim is not unloaded when Aventail Connect is shut down. Once
- observed, the problem persists until the shim is either explicitly
- unloaded or the machine is rebooted. Instructions for temporarily
- removing the Aventail Connect V3.x shim can be found here:
- "<a href="http://support.aventail.com/akb/article00386.html"
- >How to Remove Aventail Connect v3.x from the LSP Order for Testing
- Purposes</a>."
- </p>
- <p>
- Another potential solution (not tested) is to add <code>apache.exe</code>
- to the Aventail "Connect Exclusion List". See this link for details:
- "<a href="http://support.aventail.com/akb/article00586.html"
- >How to Add an Application to Aventail Connect's Application Exclusion
- List</a>."
- </p>
- <hr>
- </LI>
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.7 $ ($Date: 2001/02/28 03:35:59 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="5"><STRONG>Configuration Questions</STRONG>
- <OL>
- <LI><A HREF="#fdlim">Why can't I run more than <<EM>n</EM>>
- virtual hosts?</A>
- </LI>
- <LI><A HREF="#freebsd-setsize">Can I increase <SAMP>FD_SETSIZE</SAMP>
- on FreeBSD?</A>
- </LI>
- <LI><A HREF="#errordoc401">Why doesn't my <CODE>ErrorDocument
- 401</CODE> work?</A>
- </LI>
- <LI><A HREF="#cookies1">Why does Apache send a cookie on every response?</A>
- </LI>
- <LI><A HREF="#cookies2">Why don't my cookies work, I even compiled in
- <SAMP>mod_cookies</SAMP>?</A>
- </LI>
- <LI><A HREF="#jdk1-and-http1.1">Why do my Java app[let]s give me plain text
- when I request an URL from an Apache server?</A>
- </LI>
- <LI><A HREF="#midi">How do I get Apache to send a MIDI file so the
- browser can play it?</A>
- </LI>
- <LI><A HREF="#addlog">How do I add browsers and referrers to my logs?</A>
- </LI>
- <LI><A HREF="#set-servername">Why does accessing directories only work
- when I include the trailing "/"
- (<EM>e.g.</EM>, <SAMP>http://foo.domain.com/~user/</SAMP>) but
- not when I omit it
- (<EM>e.g.</EM>, <SAMP>http://foo.domain.com/~user</SAMP>)?</A>
- </LI>
- <LI><A HREF="#no-info-directives">Why doesn't mod_info list any
- directives?</A>
- </LI>
- <LI><A HREF="#namevhost">I upgraded to Apache 1.3 and now my
- virtual hosts don't work!</A>
- </LI>
- <LI><A HREF="#redhat-htm">I'm using RedHat Linux and my .htm files are
- showing up as HTML source rather than being formatted!</A>
- </LI>
- <LI><A HREF="#htaccess-work">My <CODE>.htaccess</CODE> files are being
- ignored.</A>
- </LI>
- <LI><A HREF="#forbidden">Why do I get a
- "<SAMP>Forbidden</SAMP>" message whenever I try to
- access a particular directory?</A>
- <LI><A HREF="#ie-ignores-mime">Why do my files appear correctly in
- Internet Explorer, but show up as source or trigger a save
- window with Netscape?</A>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>E. Configuration Questions</H3>
-<OL>
-
- <LI><A NAME="fdlim">
- <STRONG>Why can't I run more than <<EM>n</EM>>
- virtual hosts?</STRONG>
- </A>
- <P>
- You are probably running into resource limitations in your
- operating system. The most common limitation is the
- <EM>per</EM>-process limit on <STRONG>file descriptors</STRONG>,
- which is almost always the cause of problems seen when adding
- virtual hosts. Apache often does not give an intuitive error
- message because it is normally some library routine (such as
- <CODE>gethostbyname()</CODE>) which needs file descriptors and
- doesn't complain intelligibly when it can't get them.
- </P>
- <P>
- Each log file requires a file descriptor, which means that if you are
- using separate access and error logs for each virtual host, each
- virtual host needs two file descriptors. Each
- <A HREF="../mod/mpm_common.html#listen"><SAMP>Listen</SAMP></A>
- directive also needs a file descriptor.
- </P>
- <P>
- Typical values for <<EM>n</EM>> that we've seen are in
- the neighborhood of 128 or 250. When the server bumps into the file
- descriptor limit, it may dump core with a SIGSEGV, it might just
- hang, or it may limp along and you'll see (possibly meaningful) errors
- in the error log. One common problem that occurs when you run into
- a file descriptor limit is that CGI scripts stop being executed
- properly.
- </P>
- <P>
- As to what you can do about this:
- </P>
- <OL>
- <LI>Reduce the number of
- <A HREF="../mod/mpm_common.html#listen"><SAMP>Listen</SAMP></A>
- directives. If there are no other servers running on the machine
- on the same port then you normally don't
- need any Listen directives at all. By default Apache listens to
- all addresses on port 80.
- </LI>
- <LI>Reduce the number of log files. You can use
- <A HREF="../mod/mod_log_config.html"><SAMP>mod_log_config</SAMP></A>
- to log all requests to a single log file while including the name
- of the virtual host in the log file. You can then write a
- script to split the logfile into separate files later if
- necessary. Such a script is provided with the Apache 1.3 distribution
- in the <SAMP>src/support/split-logfile</SAMP> file.
- </LI>
- <LI>Increase the number of file descriptors available to the server
- (see your system's documentation on the <CODE>limit</CODE> or
- <CODE>ulimit</CODE> commands). For some systems, information on
- how to do this is available in the
- <A HREF="perf-tuning.html">performance hints</A> page. There is a specific
- note for <A HREF="#freebsd-setsize">FreeBSD</A> below.
- <P>
- For Windows 95, try modifying your <SAMP>C:\CONFIG.SYS</SAMP> file to
- include a line like
- </P>
- <DL>
- <DD><CODE>FILES=300</CODE>
- </DD>
- </DL>
- <P>
- Remember that you'll need to reboot your Windows 95 system in order
- for the new value to take effect.
- </P>
- </LI>
- <LI>"Don't do that" - try to run with fewer virtual hosts
- </LI>
- <LI>Spread your operation across multiple server processes (using
- <A HREF="../mod/mpm_common.html#listen"><SAMP>Listen</SAMP></A>
- for example, but see the first point) and/or ports.
- </LI>
- </OL>
- <P>
- Since this is an operating-system limitation, there's not much else
- available in the way of solutions.
- </P>
- <P>
- As of 1.2.1 we have made attempts to work around various limitations
- involving running with many descriptors.
- <A HREF="descriptors.html">More information is available.</A>
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="freebsd-setsize">
- <STRONG>Can I increase <SAMP>FD_SETSIZE</SAMP> on FreeBSD?</STRONG>
- </A>
- <P>
- On versions of FreeBSD before 3.0, the <SAMP>FD_SETSIZE</SAMP> define
- defaults to 256. This means that you will have trouble usefully using
- more than 256 file descriptors in Apache. This can be increased, but
- doing so can be tricky.
- </P>
- <P>
- If you are using a version prior to 2.2, you need to recompile your
- kernel with a larger <SAMP>FD_SETSIZE</SAMP>. This can be done by adding a
- line such as:
- </P>
- <DL>
- <DD><CODE>options FD_SETSIZE <EM>nnn</EM></CODE>
- </DD>
- </DL>
- <P>
- to your kernel config file. Starting at version 2.2, this is no
- longer necessary.
- </P>
- <P>
- If you are using a version of 2.1-stable from after 1997/03/10 or
- 2.2 or 3.0-current from before 1997/06/28, there is a limit in
- the resolver library that prevents it from using more file descriptors
- than what <SAMP>FD_SETSIZE</SAMP> is set to when libc is compiled. To
- increase this, you have to recompile libc with a higher
- <SAMP>FD_SETSIZE</SAMP>.
- </P>
- <P>
- In FreeBSD 3.0, the default <SAMP>FD_SETSIZE</SAMP> has been increased to
- 1024 and the above limitation in the resolver library
- has been removed.
- </P>
- <P>
- After you deal with the appropriate changes above, you can increase
- the setting of <SAMP>FD_SETSIZE</SAMP> at Apache compilation time
- by adding "<SAMP>-DFD_SETSIZE=<EM>nnn</EM></SAMP>" to the
- <SAMP>EXTRA_CFLAGS</SAMP> line in your <SAMP>Configuration</SAMP>
- file.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="errordoc401">
- <STRONG>Why doesn't my <CODE>ErrorDocument 401</CODE> work?</STRONG>
- </A>
- <P>
- You need to use it with a URL in the form
- "<SAMP>/foo/bar</SAMP>" and not one with a method and
- hostname such as "<SAMP>http://host/foo/bar</SAMP>". See the
- <A HREF="../mod/core.html#errordocument"><SAMP>ErrorDocument</SAMP></A>
- documentation for details. This was incorrectly documented in the past.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="cookies1">
- <STRONG>Why does Apache send a cookie on every response?</STRONG>
- </A>
- <P>
- Apache does <EM>not</EM> automatically send a cookie on every
- response, unless you have re-compiled it with the
- <A HREF="../mod/mod_usertrack.html"><SAMP>mod_usertrack</SAMP></A>
- module, and specifically enabled it with the
- <A HREF="../mod/mod_usertrack.html#cookietracking"
- ><SAMP>CookieTracking</SAMP></A>
- directive.
- This module has been in Apache since version 1.2.
- This module may help track users, and uses cookies to do this. If
- you are not using the data generated by <SAMP>mod_usertrack</SAMP>, do
- not compile it into Apache.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="cookies2">
- <STRONG>Why don't my cookies work, I even compiled in
- <SAMP>mod_cookies</SAMP>?
- </STRONG>
- </A>
- <P>
- Firstly, you do <EM>not</EM> need to compile in
- <SAMP>mod_cookies</SAMP> in order for your scripts to work (see the
- <A HREF="#cookies1">previous question</A>
- for more about <SAMP>mod_cookies</SAMP>). Apache passes on your
- <SAMP>Set-Cookie</SAMP> header fine, with or without this module. If
- cookies do not work it will be because your script does not work
- properly or your browser does not use cookies or is not set-up to
- accept them.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="jdk1-and-http1.1">
- <STRONG>Why do my Java app[let]s give me plain text when I request
- an URL from an Apache server?</STRONG>
- </A>
- <P>
- As of version 1.2, Apache is an HTTP/1.1 (HyperText Transfer Protocol
- version 1.1) server. This fact is reflected in the protocol version
- that's included in the response headers sent to a client when
- processing a request. Unfortunately, low-level Web access classes
- included in the Java Development Kit (JDK) version 1.0.2 expect to see
- the version string "HTTP/1.0" and do not correctly interpret
- the "HTTP/1.1" value Apache is sending (this part of the
- response is a declaration of what the server can do rather than a
- declaration of the dialect of the response). The result
- is that the JDK methods do not correctly parse the headers, and
- include them with the document content by mistake.
- </P>
- <P>
- This is definitely a bug in the JDK 1.0.2 foundation classes from Sun,
- and it has been fixed in version 1.1. However, the classes in
- question are part of the virtual machine environment, which means
- they're part of the Web browser (if Java-enabled) or the Java
- environment on the client system - so even if you develop
- <EM>your</EM> classes with a recent JDK, the eventual users might
- encounter the problem.
- The classes involved are replaceable by vendors implementing the
- Java virtual machine environment, and so even those that are based
- upon the 1.0.2 version may not have this problem.
- </P>
- <P>
- In the meantime, a workaround is to tell
- Apache to "fake" an HTTP/1.0 response to requests that come
- from the JDK methods; this can be done by including a line such as the
- following in your server configuration files:
- </P>
- <P>
- <DL>
- <DD><CODE>BrowserMatch Java1.0 force-response-1.0
- <BR>
- BrowserMatch JDK/1.0 force-response-1.0</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- More information about this issue can be found in the
- <A HREF="http://www.apache.org/info/jdk-102.html"
- ><CITE>Java and HTTP/1.1</CITE></A>
- page at the Apache web site.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="midi">
- <STRONG>How do I get Apache to send a MIDI file so the browser can
- play it?</STRONG>
- </A>
- <P>
- Even though the registered MIME type for MIDI files is
- <SAMP>audio/midi</SAMP>, some browsers are not set up to recognize it
- as such; instead, they look for <SAMP>audio/x-midi</SAMP>. There are
- two things you can do to address this:
- </P>
- <OL>
- <LI>Configure your browser to treat documents of type
- <SAMP>audio/midi</SAMP> correctly. This is the type that Apache
- sends by default. This may not be workable, however, if you have
- many client installations to change, or if some or many of the
- clients are not under your control.
- </LI>
- <LI>Instruct Apache to send a different <SAMP>Content-type</SAMP>
- header for these files by adding the following line to your server's
- configuration files:
- <P>
- <DL>
- <DD><CODE>AddType audio/x-midi .mid .midi .kar</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- Note that this may break browsers that <EM>do</EM> recognize the
- <SAMP>audio/midi</SAMP> MIME type unless they're prepared to also
- handle <SAMP>audio/x-midi</SAMP> the same way.
- </P>
- </LI>
- </OL>
- <HR>
- </LI>
-
- <LI><A NAME="addlog">
- <STRONG>How do I add browsers and referrers to my logs?</STRONG>
- </A>
- <P>
- Apache provides a couple of different ways of doing this. The
- recommended method is to compile the
- <A HREF="../mod/mod_log_config.html"><SAMP>mod_log_config</SAMP></A>
- module into your configuration and use the
- <A HREF="../mod/mod_log_config.html#customlog"><SAMP>CustomLog</SAMP></A>
- directive.
- </P>
- <P>
- You can either log the additional information in files other than your
- normal transfer log, or you can add them to the records already being
- written. For example:
- </P>
- <P>
- <CODE>
- CustomLog logs/access_log "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\""
- </CODE>
- </P>
- <P>
- This will add the values of the <SAMP>User-agent:</SAMP> and
- <SAMP>Referer:</SAMP> headers, which indicate the client and the
- referring page, respectively, to the end of each line in the access
- log.
- </P>
- <P>
- You may want to check out the <CITE>Apache Week</CITE> article
- entitled:
- "<A HREF="http://www.apacheweek.com/features/logfiles" REL="Help"
- ><CITE>Gathering Visitor Information: Customizing Your
- Logfiles</CITE></A>".
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="set-servername">
- <STRONG>Why does accessing directories only work when I include
- the trailing "/"
- (<EM>e.g.</EM>, <SAMP>http://foo.domain.com/~user/</SAMP>)
- but not when I omit it
- (<EM>e.g.</EM>, <SAMP>http://foo.domain.com/~user</SAMP>)?</STRONG>
- </A>
- <P>
- When you access a directory without a trailing "/", Apache needs
- to send what is called a redirect to the client to tell it to
- add the trailing slash. If it did not do so, relative URLs would
- not work properly. When it sends the redirect, it needs to know
- the name of the server so that it can include it in the redirect.
- There are two ways for Apache to find this out; either it can guess,
- or you can tell it. If your DNS is configured correctly, it can
- normally guess without any problems. If it is not, however, then
- you need to tell it.
- </P>
- <P>
- Add a <A HREF="../mod/core.html#servername">ServerName</A> directive
- to the config file to tell it what the domain name of the server is.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="no-info-directives">
- <STRONG>Why doesn't mod_info list any directives?</STRONG>
- </A>
- <P>
- The <A HREF="../mod/mod_info.html"><SAMP>mod_info</SAMP></A>
- module allows you to use a Web browser to see how your server is
- configured. Among the information it displays is the list modules and
- their configuration directives. The "current" values for
- the directives are not necessarily those of the running server; they
- are extracted from the configuration files themselves at the time of
- the request. If the files have been changed since the server was last
- reloaded, the display will not match the values actively in use.
- If the files and the path to the files are not readable by the user as
- which the server is running (see the
- <A HREF="../mod/mpm_common.html#user"><SAMP>User</SAMP></A>
- directive), then <SAMP>mod_info</SAMP> cannot read them in order to
- list their values. An entry <EM>will</EM> be made in the error log in
- this event, however.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="namevhost">
- <STRONG>I upgraded to Apache 1.3 and now my virtual hosts don't
- work!</STRONG>
- </A>
- <P>
- In versions of Apache prior to 1.3b2, there was a lot of confusion
- regarding address-based virtual hosts and (HTTP/1.1) name-based
- virtual hosts, and the rules concerning how the server processed
- <SAMP><VirtualHost></SAMP> definitions were very complex and not
- well documented.
- </P>
- <P>
- Apache 1.3b2 introduced a new directive,
- <A HREF="http://www.apache.org/docs/mod/core.html#namevirtualhost"
- ><SAMP>NameVirtualHost</SAMP></A>,
- which simplifies the rules quite a bit. However, changing the rules
- like this means that your existing name-based
- <SAMP><VirtualHost></SAMP> containers probably won't work
- correctly immediately following the upgrade.
- </P>
- <P>
- To correct this problem, add the following line to the beginning of
- your server configuration file, before defining any virtual hosts:
- </P>
- <DL>
- <DD><CODE>NameVirtualHost <EM>n.n.n.n</EM></CODE>
- </DD>
- </DL>
- <P>
- Replace the "<SAMP>n.n.n.n</SAMP>" with the IP address to
- which the name-based virtual host names resolve; if you have multiple
- name-based hosts on multiple addresses, repeat the directive for each
- address.
- </P>
- <P>
- Make sure that your name-based <SAMP><VirtualHost></SAMP> blocks
- contain <SAMP>ServerName</SAMP> and possibly <SAMP>ServerAlias</SAMP>
- directives so Apache can be sure to tell them apart correctly.
- </P>
- <P>
- Please see the <A HREF="../vhosts/">Apache
- Virtual Host documentation</A> for further details about configuration.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="redhat-htm">
- <STRONG>I'm using RedHat Linux and my .htm files are showing
- up as HTML source rather than being formatted!</STRONG>
- </A>
-
- <P>
- RedHat messed up and forgot to put a content type for <CODE>.htm</CODE>
- files into <CODE>/etc/mime.types</CODE>. Edit <CODE>/etc/mime.types</CODE>,
- find the line containing <CODE>html</CODE> and add <CODE>htm</CODE> to it.
- Then restart your httpd server:
- </P>
- <DL>
- <DD><CODE>kill -HUP `cat /var/run/httpd.pid`</CODE>
- </DD>
- </DL>
- <P>
- Then <STRONG>clear your browsers' caches</STRONG>. (Many browsers won't
- re-examine the content type after they've reloaded a page.)
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="htaccess-work">
- <STRONG>My <CODE>.htaccess</CODE> files are being ignored.</STRONG></A>
- <P>
- This is almost always due to your <A HREF="../mod/core.html#allowoverride">
- AllowOverride</A> directive being set incorrectly for the directory in
- question. If it is set to <CODE>None</CODE> then .htaccess files will
- not even be looked for. If you do have one that is set, then be certain
- it covers the directory you are trying to use the .htaccess file in.
- This is normally accomplished by ensuring it is inside the proper
- <A HREF="../mod/core.html#directory">Directory</A> container.
- </P>
- <HR>
- </LI>
- <LI><A NAME="forbidden">
- <STRONG>Why do I get a "<SAMP>Forbidden</SAMP>" message
- whenever I try to access a particular directory?</STRONG></A>
- <P>
- This message is generally caused because either
- </P>
- <UL>
- <LI>The underlying file system permissions do not allow the
- User/Group under which Apache is running to access the necessary
- files; or
- <LI>The Apache configuration has some access restrictions in
- place which forbid access to the files.
- </UL>
- <P>
- You can determine which case applies to your situation by checking the
- error log.
- </P>
- <P>
- In the case where file system permission are at fault, remember
- that not only must the directory and files in question be readable,
- but also all parent directories must be at least searchable by the
- web server in order for the content to be accessible.
- </P>
- <HR>
- </LI>
- <LI><A NAME="ie-ignores-mime">
- <STRONG>Why do my files appear correctly in Internet
- Explorer, but show up as source or trigger a save window
- with Netscape?</STRONG></A>
- <P>
- Internet Explorer (IE) and Netscape handle mime type detection in different
- ways, and therefore will display the document differently. In particular,
- IE sometimes relies on the file extension to determine the mime type. This
- can happen when the server specifies a mime type of
- <CODE>application/octet-stream</CODE> or <CODE>text/plain</CODE>.
- (Unfortunately, this behavior makes it impossible to properly send plain
- text in some situations unless the file extension is <CODE>txt</CODE>.)
- There are more details available on IE's mime type detection behavior in an
- <A HREF="http://msdn.microsoft.com/workshop/networking/moniker/overview/appendix_a.asp">MSDN
- article</A>.
- </P>
-
- <P>
- In order to make all browsers work correctly, you should assure
- that Apache sends the correct mime type for the file. This is
- accomplished by editing the <CODE>mime.types</CODE> file or using
- an <A HREF="../mod/mod_mime.html#addtype"><CODE>AddType</CODE></A>
- directive in the Apache configuration files.
- </P>
- <HR>
- </LI>
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.9 $ ($Date: 2001/02/28 03:36:00 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="6"><STRONG>Dynamic Content (CGI and SSI)</STRONG>
- <OL>
- <LI><A HREF="#CGIoutsideScriptAlias">How do I enable CGI execution
- in directories other than the ScriptAlias?</A>
- </LI>
- <LI><A HREF="#premature-script-headers">What does it mean when my
- CGIs fail with "<SAMP>Premature end of script
- headers</SAMP>"?</A>
- </LI>
- <LI><A HREF="#POSTnotallowed">Why do I keep getting "Method Not
- Allowed" for form POST requests?</A>
- </LI>
- <LI><A HREF="#nph-scripts">How can I get my script's output without
- Apache buffering it? Why doesn't my server push work?</A>
- </LI>
- <LI><A HREF="#cgi-spec">Where can I find the "CGI
- specification"?</A>
- </LI>
- <LI><A HREF="#fastcgi">Why isn't FastCGI included with Apache any
- more?</A>
- </LI>
- <LI><A HREF="#ssi-part-i">How do I enable SSI (parsed HTML)?</A>
- </LI>
- <LI><A HREF="#ssi-part-ii">Why don't my parsed files get cached?</A>
- </LI>
- <LI><A HREF="#ssi-part-iii">How can I have my script output parsed?</A>
- </LI>
- <LI><A HREF="#ssi-part-iv">SSIs don't work for VirtualHosts and/or
- user home directories</A>
- </LI>
- <LI><A HREF="#errordocssi">How can I use <CODE>ErrorDocument</CODE>
- and SSI to simplify customized error messages?</A>
- </LI>
- <LI><A HREF="#remote-user-var">Why is the environment variable
- <SAMP>REMOTE_USER</SAMP> not set?</A>
- </LI>
- <LI><A HREF="#user-cgi">How do I allow each of my user directories
- to have a cgi-bin directory?</A>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>F. Dynamic Content (CGI and SSI)</H3>
-<OL>
-
- <LI><A NAME="CGIoutsideScriptAlias">
- <STRONG>How do I enable CGI execution in directories other than
- the ScriptAlias?</STRONG>
- </A>
- <P>
- Apache recognizes all files in a directory named as a
- <A HREF="../mod/mod_alias.html#scriptalias"><SAMP>ScriptAlias</SAMP></A>
- as being eligible for execution rather than processing as normal
- documents. This applies regardless of the file name, so scripts in a
- ScriptAlias directory don't need to be named
- "<SAMP>*.cgi</SAMP>" or "<SAMP>*.pl</SAMP>" or
- whatever. In other words, <EM>all</EM> files in a ScriptAlias
- directory are scripts, as far as Apache is concerned.
- </P>
- <P>
- To persuade Apache to execute scripts in other locations, such as in
- directories where normal documents may also live, you must tell it how
- to recognize them - and also that it's okay to execute them. For
- this, you need to use something like the
- <A HREF="../mod/mod_mime.html#addhandler"><SAMP>AddHandler</SAMP></A>
- directive.
- </P>
- <P>
- <OL>
- <LI>In an appropriate section of your server configuration files, add
- a line such as
- <P>
- <DL>
- <DD><CODE>AddHandler cgi-script .cgi</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- The server will then recognize that all files in that location (and
- its logical descendants) that end in "<SAMP>.cgi</SAMP>"
- are script files, not documents.
- </P>
- </LI>
- <LI>Make sure that the directory location is covered by an
- <A HREF="../mod/core.html#options"><SAMP>Options</SAMP></A>
- declaration that includes the <SAMP>ExecCGI</SAMP> option.
- </LI>
- </OL>
- <P></P>
- <P>
- In some situations, you might not want to actually
- allow all files named "<SAMP>*.cgi</SAMP>" to be executable.
- Perhaps all you want is to enable a particular file in a normal directory to
- be executable. This can be alternatively accomplished
- <EM>via</EM> <A HREF="../mod/mod_rewrite.html"><SAMP>mod_rewrite</SAMP></A>
- and the following steps:
- </P>
- <P>
- <OL>
- <LI>Locally add to the corresponding <SAMP>.htaccess</SAMP> file a ruleset
- similar to this one:
- <P>
- <DL>
- <DD><CODE>RewriteEngine on
- <BR>
- RewriteBase /~foo/bar/
- <BR>
- RewriteRule ^quux\.cgi$ - [T=application/x-httpd-cgi]</CODE>
- </DD>
- </DL>
- <P></P>
- </LI>
- <LI>Make sure that the directory location is covered by an
- <A HREF="../mod/core.html#options"><SAMP>Options</SAMP></A>
- declaration that includes the <SAMP>ExecCGI</SAMP> and
- <SAMP>FollowSymLinks</SAMP> option.
- </LI>
- </OL>
- <P></P>
- <HR>
- </LI>
-
- <LI><A NAME="premature-script-headers">
- <STRONG>What does it mean when my CGIs fail with
- "<SAMP>Premature end of script headers</SAMP>"?</STRONG>
- </A>
- <P>
- It means just what it says: the server was expecting a complete set of
- HTTP headers (one or more followed by a blank line), and didn't get
- them.
- </P>
- <P>
- The most common cause of this problem is the script dying before
- sending the complete set of headers, or possibly any at all, to the
- server. To see if this is the case, try running the script standalone
- from an interactive session, rather than as a script under the server.
- If you get error messages, this is almost certainly the cause of the
- "premature end of script headers" message. Even if the CGI
- runs fine from the command line, remember that the environment and
- permissions may be different when running under the web server. The
- CGI can only access resources allowed for the <A
- HREF="../mod/mpm_common.html#user"><CODE>User</CODE></A> and
- <A HREF="../mod/mpm_common.html#group"><CODE>Group</CODE></A> specified in
- your Apache configuration. In addition, the environment will not be
- the same as the one provided on the command line, but it can be
- adjusted using the directives provided by <A
- HREF="../mod/mod_env.html">mod_env</A>.
- </P>
- <P>
- The second most common cause of this (aside from people not
- outputting the required headers at all) is a result of an interaction
- with Perl's output buffering. To make Perl flush its buffers
- after each output statement, insert the following statements around
- the <CODE>print</CODE> or <CODE>write</CODE> statements that send your
- HTTP headers:
- </P>
- <P>
- <DL>
- <DD><CODE>{<BR>
- local ($oldbar) = $|;<BR>
- $cfh = select (STDOUT);<BR>
- $| = 1;<BR>
- #<BR>
- # print your HTTP headers here<BR>
- #<BR>
- $| = $oldbar;<BR>
- select ($cfh);<BR>
- }</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- This is generally only necessary when you are calling external
- programs from your script that send output to stdout, or if there will
- be a long delay between the time the headers are sent and the actual
- content starts being emitted. To maximize performance, you should
- turn buffer-flushing back <EM>off</EM> (with <CODE>$| = 0</CODE> or the
- equivalent) after the statements that send the headers, as displayed
- above.
- </P>
- <P>
- If your script isn't written in Perl, do the equivalent thing for
- whatever language you <EM>are</EM> using (<EM>e.g.</EM>, for C, call
- <CODE>fflush()</CODE> after writing the headers).
- </P>
- <P>
- Another cause for the "premature end of script headers"
- message are the RLimitCPU and RLimitMEM directives. You may
- get the message if the CGI script was killed due to a
- resource limit.
- </P>
- <P>
- In addition, a configuration problem in <A
- HREF="../suexec.html">suEXEC</A>, mod_perl, or another third party
- module can often interfere with the execution of your CGI and cause
- the "premature end of script headers" message.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="POSTnotallowed">
- <STRONG>Why do I keep getting "Method Not Allowed" for
- form POST requests?</STRONG>
- </A>
- <P>
- This is almost always due to Apache not being configured to treat the
- file you are trying to POST to as a CGI script. You can not POST
- to a normal HTML file; the operation has no meaning. See the FAQ
- entry on <A HREF="#CGIoutsideScriptAlias">CGIs outside ScriptAliased
- directories</A> for details on how to configure Apache to treat the
- file in question as a CGI.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="nph-scripts">
- <STRONG>How can I get my script's output without Apache buffering
- it? Why doesn't my server push work?</STRONG>
- </A>
- <P>
- As of Apache 1.3, CGI scripts are essentially not buffered. Every time
- your script does a "flush" to output data, that data gets relayed on to
- the client. Some scripting languages, for example Perl, have their own
- buffering for output - this can be disabled by setting the <CODE>$|</CODE>
- special variable to 1. Of course this does increase the overall number
- of packets being transmitted, which can result in a sense of slowness for
- the end user.
- </P>
- <P>Prior to 1.3, you needed to use "nph-" scripts to accomplish
- non-buffering. Today, the only difference between nph scripts and
- normal scripts is that nph scripts require the full HTTP headers to
- be sent.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="cgi-spec">
- <STRONG>Where can I find the "CGI specification"?</STRONG>
- </A>
- <P>
- The Common Gateway Interface (CGI) specification can be found at
- the original NCSA site
- <<A HREF="http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">
- <SAMP>http://hoohoo.ncsa.uiuc.edu/cgi/interface.html</SAMP></A>>.
- This version hasn't been updated since 1995, and there have been
- some efforts to update it.
- </P>
- <P>
- A new draft is being worked on with the intent of making it an informational
- RFC; you can find out more about this project at
- <<A HREF="http://web.golux.com/coar/cgi/"
- ><SAMP>http://web.golux.com/coar/cgi/</SAMP></A>>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="fastcgi">
- <STRONG>Why isn't FastCGI included with Apache any more?</STRONG>
- </A>
- <P>
- The simple answer is that it was becoming too difficult to keep the
- version being included with Apache synchronized with the master copy
- at the
- <A HREF="http://www.fastcgi.com/"
- >FastCGI web site</A>. When a new version of Apache was released, the
- version of the FastCGI module included with it would soon be out of date.
- </P>
- <P>
- You can still obtain the FastCGI module for Apache from the master
- FastCGI web site.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="ssi-part-i">
- <STRONG>How do I enable SSI (parsed HTML)?</STRONG>
- </A>
- <P>
- SSI (an acronym for Server-Side Include) directives allow static HTML
- documents to be enhanced at run-time (<EM>e.g.</EM>, when delivered to
- a client by Apache). The format of SSI directives is covered
- in the <A HREF="../mod/mod_include.html">mod_include manual</A>;
- suffice it to say that Apache supports not only SSI but
- xSSI (eXtended SSI) directives.
- </P>
- <P>
- Processing a document at run-time is called <EM>parsing</EM> it;
- hence the term "parsed HTML" sometimes used for documents
- that contain SSI instructions. Parsing tends to be
- resource-consumptive compared to serving static files, and is not
- enabled by default. It can also interfere with the cachability of
- your documents, which can put a further load on your server. (See
- the <A HREF="#ssi-part-ii">next question</A> for more information
- about this.)
- </P>
- <P>
- To enable SSI processing, you need to
- </P>
- <UL>
- <LI>Build your server with the
- <A HREF="../mod/mod_include.html"><SAMP>mod_include</SAMP></A>
- module. This is normally compiled in by default.
- </LI>
- <LI>Make sure your server configuration files have an
- <A HREF="../mod/core.html#options"><SAMP>Options</SAMP></A>
- directive which permits <SAMP>Includes</SAMP>.
- </LI>
- <LI>Make sure that the directory where you want the SSI documents to
- live is covered by the "INCLUDES" output filter,
- either explicitly or in some ancestral location. That can be done
- with the following
- <A HREF="../mod/core.html#setoutputfilter"><SAMP>SetOutputFilter</SAMP></A>
- directive:
- <P>
- <blockquote><code>
- <FilesMatch "\.shtml[.$]"><br>
- SetOutputFilter INCLUDES<br>
- </FilesMatch>
- </code></blockquote>
- <P></P>
- <P>
- This indicates that all files with the extension
- ".shtml" in that location (or its descendants) should be
- parsed. Note that using ".html" will cause all normal
- HTML files to be parsed, which may put an inordinate load on your
- server.
- </P>
- </LI>
- </UL>
- <P>
- For additional information, see the <CITE>Apache Week</CITE> article on
- <A HREF="http://www.apacheweek.com/features/ssi" REL="Help"
- ><CITE>Using Server Side Includes</CITE></A>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="ssi-part-ii">
- <STRONG>Why don't my parsed files get cached?</STRONG>
- </A>
- <P>
- Since the server is performing run-time processing of your SSI
- directives, which may change the content shipped to the client, it
- can't know at the time it starts parsing what the final size of the
- result will be, or whether the parsed result will always be the same.
- This means that it can't generate <SAMP>Content-Length</SAMP> or
- <SAMP>Last-Modified</SAMP> headers. Caches commonly work by comparing
- the <SAMP>Last-Modified</SAMP> of what's in the cache with that being
- delivered by the server. Since the server isn't sending that header
- for a parsed document, whatever's doing the caching can't tell whether
- the document has changed or not - and so fetches it again to be on the
- safe side.
- </P>
- <P>
- You can work around this in some cases by causing an
- <SAMP>Expires</SAMP> header to be generated. (See the
- <A HREF="../mod/mod_expires.html" REL="Help"><SAMP>mod_expires</SAMP></A>
- documentation for more details.) Another possibility is to use the
- <A HREF="../mod/mod_include.html#xbithack" REL="Help"
- ><SAMP>XBitHack Full</SAMP></A>
- mechanism, which tells Apache to send (under certain circumstances
- detailed in the XBitHack directive description) a
- <SAMP>Last-Modified</SAMP> header based upon the last modification
- time of the file being parsed. Note that this may actually be lying
- to the client if the parsed file doesn't change but the SSI-inserted
- content does; if the included content changes often, this can result
- in stale copies being cached.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="ssi-part-iii">
- <STRONG>How can I have my script output parsed?</STRONG>
- </A>
- <P>
- So you want to include SSI directives in the output from your CGI
- script, but can't figure out how to do it?
- The short answer is "you can't." This is potentially
- a security liability and, more importantly, it can not be cleanly
- implemented under the current server API. The best workaround
- is for your script itself to do what the SSIs would be doing.
- After all, it's generating the rest of the content.
- </P>
- <P>
- This is a feature The Apache Group hopes to add in the next major
- release after 1.3.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="ssi-part-iv">
- <STRONG>SSIs don't work for VirtualHosts and/or
- user home directories.</STRONG>
- </A>
- <P>
- This is almost always due to having some setting in your config file that
- sets "Options Includes" or some other setting for your DocumentRoot
- but not for other directories. If you set it inside a Directory
- section, then that setting will only apply to that directory.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="errordocssi">
- <STRONG>How can I use <CODE>ErrorDocument</CODE>
- and SSI to simplify customized error messages?</STRONG>
- </A>
- <P>
- Have a look at <A HREF="custom_errordocs.html">this document</A>.
- It shows in example form how you can a combination of XSSI and
- negotiation to tailor a set of <CODE>ErrorDocument</CODE>s to your
- personal taste, and returning different internationalized error
- responses based on the client's native language.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="remote-user-var">
- <STRONG>Why is the environment variable
- <SAMP>REMOTE_USER</SAMP> not set?</STRONG>
- </A>
- <P>
- This variable is set and thus available in SSI or CGI scripts <STRONG>if and
- only if</STRONG> the requested document was protected by access
- authentication. For an explanation on how to implement these restrictions,
- see
- <A HREF="http://www.apacheweek.com/"><CITE>Apache Week</CITE></A>'s
- articles on
- <A HREF="http://www.apacheweek.com/features/userauth"
- ><CITE>Using User Authentication</CITE></A>
- or
- <A HREF="http://www.apacheweek.com/features/dbmauth"
- ><CITE>DBM User Authentication</CITE></A>.
- </P>
- <P>
- Hint: When using a CGI script to receive the data of a HTML <SAMP>FORM</SAMP>
- notice that protecting the document containing the <SAMP>FORM</SAMP> is not
- sufficient to provide <SAMP>REMOTE_USER</SAMP> to the CGI script. You have
- to protect the CGI script, too. Or alternatively only the CGI script (then
- authentication happens only after filling out the form).
- </P>
- <HR>
- </LI>
- <LI><A NAME="user-cgi"><STRONG>How do I allow each of my user directories
- to have a cgi-bin directory?</STRONG></A>
- <P>
- Remember that CGI execution does not need to be restricted only to
- cgi-bin directories. You can <A HREF="#CGIoutsideScriptAlias">allow
- CGI script execution in arbitrary parts of your filesystem</A>.
- </P>
- <P>
- There are many ways to give each user directory a cgi-bin directory
- such that anything requested as
- <SAMP>http://example.com/~user/cgi-bin/program</SAMP> will be
- executed as a CGI script.
- Two alternatives are:
- <OL>
- <LI>Place the cgi-bin directory next to the public_html directory:
-
- <DL>
- <DD><CODE>ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2</CODE>
- </DD>
- </DL>
-
- </LI>
- <LI>Place the cgi-bin directory underneath the public_html directory:
- <DL>
- <DD><CODE><Directory /home/*/public_html/cgi-bin><BR>
- Options ExecCGI<BR>
- SetHandler cgi-script<BR>
- </Directory></CODE>
- </DD>
- </DL>
- </LI>
- </OL>
- <HR>
- </LI>
-
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.6 $ ($Date: 2001/07/23 18:54:32 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="7"><STRONG>Authentication and Access Restrictions</STRONG>
- <OL>
- <LI><A HREF="#dnsauth">Why isn't restricting access by host or domain name
- working correctly?</A>
- </LI>
- <LI><A HREF="#user-authentication">How do I set up Apache to require
- a username and password to access certain documents?</A>
- </LI>
- <LI><A HREF="#remote-auth-only">How do I set up Apache to allow access
- to certain documents only if a site is either a local site
- <EM>or</EM> the user supplies a password and username?</A>
- </LI>
- <LI><A HREF="#authauthoritative">Why does my authentication give
- me a server error?</A>
- </LI>
- <LI><A HREF="#auth-on-same-machine">Do I have to keep the (mSQL)
- authentication information on the same machine?</A>
- </LI>
- <LI><A HREF="#msql-slow">Why is my mSQL authentication terribly slow?</A>
- </LI>
- <LI><A HREF="#passwdauth">Can I use my <SAMP>/etc/passwd</SAMP> file
- for Web page authentication?</A>
- </LI>
- <LI><A HREF="#prompted-twice">Why does Apache ask for my password
- twice before serving a file?</a>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
- <H3>G. Authentication and Access Restrictions</H3>
-<OL>
-
- <LI><A NAME="dnsauth">
- <STRONG>Why isn't restricting access by host or domain name
- working correctly?</STRONG>
- </A>
- <P>
- Two of the most common causes of this are:
- </P>
- <OL>
- <LI><STRONG>An error, inconsistency, or unexpected mapping in the DNS
- registration</STRONG>
- <BR>
- This happens frequently: your configuration restricts access to
- <SAMP>Host.FooBar.Com</SAMP>, but you can't get in from that host.
- The usual reason for this is that <SAMP>Host.FooBar.Com</SAMP> is
- actually an alias for another name, and when Apache performs the
- address-to-name lookup it's getting the <EM>real</EM> name, not
- <SAMP>Host.FooBar.Com</SAMP>. You can verify this by checking the
- reverse lookup yourself. The easiest way to work around it is to
- specify the correct host name in your configuration.
- </LI>
- <LI><STRONG>Inadequate checking and verification in your
- configuration of Apache</STRONG>
- <BR>
- If you intend to perform access checking and restriction based upon
- the client's host or domain name, you really need to configure
- Apache to double-check the origin information it's supplied. You do
- this by adding the <SAMP>-DMAXIMUM_DNS</SAMP> clause to the
- <SAMP>EXTRA_CFLAGS</SAMP> definition in your
- <SAMP>Configuration</SAMP> file. For example:
- <P>
- <DL>
- <DD><CODE>EXTRA_CFLAGS=-DMAXIMUM_DNS</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- This will cause Apache to be very paranoid about making sure a
- particular host address is <EM>really</EM> assigned to the name it
- claims to be. Note that this <EM>can</EM> incur a significant
- performance penalty, however, because of all the name resolution
- requests being sent to a nameserver.
- </P>
- </LI>
- </OL>
- <HR>
- </LI>
-
- <LI><A NAME="user-authentication">
- <STRONG>How do I set up Apache to require a username and
- password to access certain documents?</STRONG>
- </A>
- <P>
- There are several ways to do this; some of the more popular
- ones are to use the <A HREF="../mod/mod_auth.html">mod_auth</A>,
- <A HREF="../mod/mod_auth_db.html">mod_auth_db</A>, or
- <A HREF="../mod/mod_auth_dbm.html">mod_auth_dbm</A> modules.
- </P>
- <P>
- For an explanation on how to implement these restrictions, see
- <A HREF="http://www.apacheweek.com/"><CITE>Apache Week</CITE></A>'s
- articles on
- <A HREF="http://www.apacheweek.com/features/userauth"
- ><CITE>Using User Authentication</CITE></A>
- or
- <A HREF="http://www.apacheweek.com/features/dbmauth"
- ><CITE>DBM User Authentication</CITE></A>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="remote-auth-only">
- <STRONG>How do I set up Apache to allow access to certain
- documents only if a site is either a local site <EM>or</EM>
- the user supplies a password and username?</STRONG>
- </A>
- <P>
- Use the <A HREF="../mod/core.html#satisfy">Satisfy</A> directive,
- in particular the <CODE>Satisfy Any</CODE> directive, to require
- that only one of the access restrictions be met. For example,
- adding the following configuration to a <SAMP>.htaccess</SAMP>
- or server configuration file would restrict access to people who
- either are accessing the site from a host under domain.com or
- who can supply a valid username and password:
- </P>
- <P>
- <DL>
- <DD><CODE>Deny from all
- <BR>
- Allow from .domain.com
- <BR>
- AuthType Basic
- <BR>
- AuthUserFile /usr/local/apache/conf/htpasswd.users
- <BR>
- AuthName "special directory"
- <BR>
- Require valid-user
- <BR>
- Satisfy any</CODE>
- </DD>
- </DL>
- <P></P>
- <P>
- See the <A HREF="#user-authentication">user authentication</A>
- question and the <A HREF="../mod/mod_access.html">mod_access</A>
- module for details on how the above directives work.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="authauthoritative">
- <STRONG>Why does my authentication give me a server error?</STRONG>
- </A>
- <P>
- Under normal circumstances, the Apache access control modules will
- pass unrecognized user IDs on to the next access control module in
- line. Only if the user ID is recognized and the password is validated
- (or not) will it give the usual success or "authentication
- failed" messages.
- </P>
- <P>
- However, if the last access module in line 'declines' the validation
- request (because it has never heard of the user ID or because it is not
- configured), the <SAMP>http_request</SAMP> handler will give one of
- the following, confusing, errors:
- </P>
- <UL>
- <LI><SAMP>check access</SAMP>
- </LI>
- <LI><SAMP>check user. No user file?</SAMP>
- </LI>
- <LI><SAMP>check access. No groups file?</SAMP>
- </LI>
- </UL>
- <P>
- This does <EM>not</EM> mean that you have to add an
- '<SAMP>AuthUserFile /dev/null</SAMP>' line as some magazines suggest!
- </P>
- <P>
- The solution is to ensure that at least the last module is authoritative
- and <STRONG>CONFIGURED</STRONG>. By default, <SAMP>mod_auth</SAMP> is
- authoritative and will give an OK/Denied, but only if it is configured
- with the proper <SAMP>AuthUserFile</SAMP>. Likewise, if a valid group
- is required. (Remember that the modules are processed in the reverse
- order from that in which they appear in your compile-time
- <SAMP>Configuration</SAMP> file.)
- </P>
- <P>
- A typical situation for this error is when you are using the
- <SAMP>mod_auth_dbm</SAMP>, <SAMP>mod_auth_msql</SAMP>,
- <SAMP>mod_auth_mysql</SAMP>, <SAMP>mod_auth_anon</SAMP> or
- <SAMP>mod_auth_cookie</SAMP> modules on their own. These are by
- default <STRONG>not</STRONG> authoritative, and this will pass the
- buck on to the (non-existent) next authentication module when the
- user ID is not in their respective database. Just add the appropriate
- '<SAMP><EM>Method</EM>Authoritative yes</SAMP>' line to the configuration.
- </P>
- <P>
- In general it is a good idea (though not terribly efficient) to have the
- file-based <SAMP>mod_auth</SAMP> a module of last resort. This allows
- you to access the web server with a few special passwords even if the
- databases are down or corrupted. This does cost a
- file open/seek/close for each request in a protected area.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="auth-on-same-machine">
- <STRONG>Do I have to keep the (mSQL) authentication information
- on the same machine?</STRONG>
- </A>
- <P>
- Some organizations feel very strongly about keeping the authentication
- information on a different machine than the webserver. With the
- <SAMP>mod_auth_msql</SAMP>, <SAMP>mod_auth_mysql</SAMP>, and other SQL
- modules connecting to (R)DBMses this is quite possible. Just configure
- an explicit host to contact.
- </P>
- <P>
- Be aware that with mSQL and Oracle, opening and closing these database
- connections is very expensive and time consuming. You might want to
- look at the code in the <SAMP>auth_*</SAMP> modules and play with the
- compile time flags to alleviate this somewhat, if your RDBMS licences
- allow for it.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="msql-slow">
- <STRONG>Why is my mSQL authentication terribly slow?</STRONG>
- </A>
- <P>
- You have probably configured the Host by specifying a FQHN,
- and thus the <SAMP>libmsql</SAMP> will use a full blown TCP/IP socket
- to talk to the database, rather than a fast internal device. The
- <SAMP>libmsql</SAMP>, the mSQL FAQ, and the <SAMP>mod_auth_msql</SAMP>
- documentation warn you about this. If you have to use different
- hosts, check out the <SAMP>mod_auth_msql</SAMP> code for
- some compile time flags which might - or might not - suit you.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="passwdauth">
- <STRONG>Can I use my <SAMP>/etc/passwd</SAMP> file
- for Web page authentication?</STRONG>
- </A>
- <P>
- Yes, you can - but it's a <STRONG>very bad idea</STRONG>. Here are
- some of the reasons:
- </P>
- <UL>
- <LI>The Web technology provides no governors on how often or how
- rapidly password (authentication failure) retries can be made. That
- means that someone can hammer away at your system's
- <SAMP>root</SAMP> password using the Web, using a dictionary or
- similar mass attack, just as fast as the wire and your server can
- handle the requests. Most operating systems these days include
- attack detection (such as <EM>n</EM> failed passwords for the same
- account within <EM>m</EM> seconds) and evasion (breaking the
- connection, disabling the account under attack, disabling
- <EM>all</EM> logins from that source, <EM>et cetera</EM>), but the
- Web does not.
- </LI>
- <LI>An account under attack isn't notified (unless the server is
- heavily modified); there's no "You have 19483 login
- failures" message when the legitimate owner logs in.
- </LI>
- <LI>Without an exhaustive and error-prone examination of the server
- logs, you can't tell whether an account has been compromised.
- Detecting that an attack has occurred, or is in progress, is fairly
- obvious, though - <EM>if</EM> you look at the logs.
- </LI>
- <LI>Web authentication passwords (at least for Basic authentication)
- generally fly across the wire, and through intermediate proxy
- systems, in what amounts to plain text. "O'er the net we
- go/Caching all the way;/O what fun it is to surf/Giving my password
- away!"
- </LI>
- <LI>Since HTTP is stateless, information about the authentication is
- transmitted <EM>each and every time</EM> a request is made to the
- server. Essentially, the client caches it after the first
- successful access, and transmits it without asking for all
- subsequent requests to the same server.
- </LI>
- <LI>It's relatively trivial for someone on your system to put up a
- page that will steal the cached password from a client's cache
- without them knowing. Can you say "password grabber"?
- </LI>
- </UL>
- <P>
- If you still want to do this in light of the above disadvantages, the
- method is left as an exercise for the reader. It'll void your Apache
- warranty, though, and you'll lose all accumulated UNIX guru points.
- </P>
- <HR>
- </LI>
- <LI><A NAME="prompted-twice"><STRONG>Why does Apache ask for my password
- twice before serving a file?</STRONG></a>
- <P>
- If the hostname under which you are accessing the server is
- different than the hostname specified in the
- <A HREF="../mod/core.html#servername"><CODE>ServerName</CODE></A>
- directive, then depending on the setting of the
- <A HREF="../mod/core.html#usecanonicalname"><CODE>UseCanonicalName</CODE></A>
- directive, Apache will redirect you to a new hostname when
- constructing self-referential URLs. This happens, for example, in
- the case where you request a directory without including the
- trailing slash.
- </P>
- <P>
- When this happens, Apache will ask for authentication once under the
- original hostname, perform the redirect, and then ask again under the
- new hostname. For security reasons, the browser must prompt again
- for the password when the host name changes.
- </P>
- <P>
- To eliminate this problem you should
- </P>
-
- <OL>
- <LI>Always use the trailing slash when requesting directories;
- <LI>Change the <CODE>ServerName</CODE> to match the name you are
- using in the URL; and/or
- <LI>Set <CODE>UseCanonicalName off</CODE>.
- </OL>
- <HR>
- </LI>
-
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.2 $ ($Date: 2000/09/09 18:19:54 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="8"><STRONG>URL Rewriting</STRONG>
- <OL>
- <LI><A HREF="#rewrite-more-config">Where can I find mod_rewrite rulesets
- which already solve particular URL-related problems?</A>
- </LI>
- <LI><A HREF="#rewrite-article">Where can I find any published information
- about URL-manipulations and mod_rewrite?</A>
- </LI>
- <LI><A HREF="#rewrite-complexity">Why is mod_rewrite so difficult to learn
- and seems so complicated?</A>
- </LI>
- <LI><A HREF="#rewrite-dontwork">What can I do if my RewriteRules don't work
- as expected?</A>
- </LI>
- <LI><A HREF="#rewrite-prefixdocroot">Why don't some of my URLs get
- prefixed with DocumentRoot when using mod_rewrite?</A>
- </LI>
- <LI><A HREF="#rewrite-nocase">How can I make all my URLs case-insensitive
- with mod_rewrite?</A>
- </LI>
- <LI><A HREF="#rewrite-virthost">Why are RewriteRules in my VirtualHost
- parts ignored?</A>
- </LI>
- <LI><A HREF="#rewrite-envwhitespace">How can I use strings with whitespaces
- in RewriteRule's ENV flag?</A>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>H. URL Rewriting</H3>
-<OL>
-
- <LI><A NAME="rewrite-more-config">
- <STRONG>Where can I find mod_rewrite rulesets which already solve
- particular URL-related problems?</STRONG>
- </A>
- <P>
- There is a collection of
- <A HREF="http://www.engelschall.com/pw/apache/rewriteguide/"
- >Practical Solutions for URL-Manipulation</A>
- where you can
- find all typical solutions the author of
- <A HREF="../mod/mod_rewrite.html"><SAMP>mod_rewrite</SAMP></A>
- currently knows of. If you have more
- interesting rulesets which solve particular problems not currently covered in
- this document, send it to
- <A HREF="mailto:rse@apache.org">Ralf S. Engelschall</A>
- for inclusion. The
- other webmasters will thank you for avoiding the reinvention of the wheel.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-article">
- <STRONG>Where can I find any published information about
- URL-manipulations and mod_rewrite?</STRONG>
- </A>
- <P>
- There is an article from
- <A HREF="mailto:rse@apache.org"
- >Ralf S. Engelschall</A>
- about URL-manipulations based on
- <A HREF="../mod/mod_rewrite.html"><SAMP>mod_rewrite</SAMP></A>
- in the "iX Multiuser Multitasking Magazin" issue #12/96. The
- german (original) version
- can be read online at
- <<A HREF="http://www.heise.de/ix/artikel/9612149/"
- >http://www.heise.de/ix/artikel/9612149/</A>>,
- the English (translated) version can be found at
- <<A HREF="http://www.heise.de/ix/artikel/E/9612149/"
- >http://www.heise.de/ix/artikel/E/9612149/</A>>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-complexity">
- <STRONG>Why is mod_rewrite so difficult to learn and seems so
- complicated?</STRONG>
- </A>
- <P>
- Hmmm... there are a lot of reasons. First, mod_rewrite itself is a powerful
- module which can help you in really <STRONG>all</STRONG> aspects of URL
- rewriting, so it can be no trivial module per definition. To accomplish
- its hard job it uses software leverage and makes use of a powerful regular
- expression
- library by Henry Spencer which is an integral part of Apache since its
- version 1.2. And regular expressions itself can be difficult to newbies,
- while providing the most flexible power to the advanced hacker.
- </P>
- <P>
- On the other hand mod_rewrite has to work inside the Apache API environment
- and needs to do some tricks to fit there. For instance the Apache API as of
- 1.x really was not designed for URL rewriting at the <TT>.htaccess</TT>
- level of processing. Or the problem of multiple rewrites in sequence, which
- is also not handled by the API per design. To provide this features
- mod_rewrite has to do some special (but API compliant!) handling which leads
- to difficult processing inside the Apache kernel. While the user usually
- doesn't see anything of this processing, it can be difficult to find
- problems when some of your RewriteRules seem not to work.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-dontwork">
- <STRONG>What can I do if my RewriteRules don't work as expected?
- </STRONG>
- </A>
- <P>
- Use "<SAMP>RewriteLog somefile</SAMP>" and
- "<SAMP>RewriteLogLevel 9</SAMP>" and have a precise look at the
- steps the rewriting engine performs. This is really the only one and best
- way to debug your rewriting configuration.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-prefixdocroot"><STRONG>Why don't some of my URLs
- get prefixed with DocumentRoot when using mod_rewrite?</STRONG>
- </A>
- <P>
- If the rule starts with <SAMP>/somedir/...</SAMP> make sure that
- really no <SAMP>/somedir</SAMP> exists on the filesystem if you
- don't want to lead the URL to match this directory, <EM>i.e.</EM>,
- there must be no root directory named <SAMP>somedir</SAMP> on the
- filesystem. Because if there is such a directory, the URL will not
- get prefixed with DocumentRoot. This behaviour looks ugly, but is
- really important for some other aspects of URL rewriting.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-nocase">
- <STRONG>How can I make all my URLs case-insensitive with mod_rewrite?
- </STRONG>
- </A>
- <P>
- You can't! The reasons are: first, that, case translations for
- arbitrary length URLs cannot be done <EM>via</EM> regex patterns and
- corresponding substitutions. One needs a per-character pattern like
- the sed/Perl <SAMP>tr|..|..|</SAMP> feature. Second, just making
- URLs always upper or lower case does not solve the whole problem of
- case-INSENSITIVE URLs, because URLs actually have to be rewritten to
- the correct case-variant for the file residing on the filesystem
- in order to allow Apache to access the file. And
- the Unix filesystem is always case-SENSITIVE.
- </P>
- <P>
- But there is a module named <CODE><A
- HREF="../mod/mod_speling.html">mod_speling.c</A></CODE> in the
- Apache distribution. Try this module to help correct people who use
- mis-cased URLs.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-virthost">
- <STRONG> Why are RewriteRules in my VirtualHost parts ignored?</STRONG>
- </A>
- <P>
- Because you have to enable the engine for every virtual host explicitly due
- to security concerns. Just add a "RewriteEngine on" to your
- virtual host configuration parts.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="rewrite-envwhitespace">
- <STRONG> How can I use strings with whitespaces in RewriteRule's ENV
- flag?</STRONG>
- </A>
- <P>
- There is only one ugly solution: You have to surround the complete
- flag argument by quotation marks (<SAMP>"[E=...]"</SAMP>). Notice:
- The argument to quote here is not the argument to the E-flag, it is
- the argument of the Apache config file parser, <EM>i.e.</EM>, the
- third argument of the RewriteRule here. So you have to write
- <SAMP>"[E=any text with whitespaces]"</SAMP>.
- </P>
- <HR>
- </LI>
-
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!--#if expr="$FAQMASTER" -->
- <!--#set var="STANDALONE" value="" -->
- <!--#set var="INCLUDED" value="YES" -->
- <!--#if expr="$QUERY_STRING = TOC" -->
- <!--#set var="TOC" value="YES" -->
- <!--#set var="CONTENT" value="" -->
- <!--#else -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="YES" -->
- <!--#endif -->
-<!--#else -->
- <!--#set var="STANDALONE" value="YES" -->
- <!--#set var="INCLUDED" value="" -->
- <!--#set var="TOC" value="" -->
- <!--#set var="CONTENT" value="" -->
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.9 $ ($Date: 2001/02/28 03:36:00 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<OL TYPE="A">
-<!--#endif -->
-<!--#if expr="$TOC || $STANDALONE" -->
- <LI VALUE="9"><STRONG>Features</STRONG>
- <OL>
- <LI><A HREF="#proxy">Does or will Apache act as a Proxy server?</A>
- </LI>
- <LI><A HREF="#multiviews">What are "multiviews"?</A>
- </LI>
- <LI><A HREF="#putsupport">Why can't I publish to my Apache server
- using PUT on Netscape Gold and other programs?</A>
- </LI>
- <LI><A HREF="#SSL-i">Why doesn't Apache include SSL?</A>
- </LI>
- <LI><A HREF="#footer">How can I attach a footer to my documents
- without using SSI?</A>
- </LI>
- <LI><A HREF="#search">Does Apache include a search engine?</A>
- </LI>
- <LI><A HREF="#rotate">How can I rotate my log files?</A>
- </LI>
- <LI><A HREF="#conditional-logging">How do I keep certain requests from
- appearing in my logs?</A>
- </LI>
- </OL>
- </LI>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#endif -->
-<!--#if expr="! $TOC" -->
-
- <H3>I. Features</H3>
-<OL>
-
- <LI><A NAME="proxy">
- <STRONG>Does or will Apache act as a Proxy server?</STRONG>
- </A>
- <P>
- Apache version 1.1 and above comes with a
- <A HREF="../mod/mod_proxy.html">proxy module</A>.
- If compiled in, this will make Apache act as a caching-proxy server.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="multiviews">
- <STRONG>What are "multiviews"?</STRONG>
- </A>
- <P>
- "Multiviews" is the general name given to the Apache
- server's ability to provide language-specific document variants in
- response to a request. This is documented quite thoroughly in the
- <A HREF="../content-negotiation.html" REL="Help">content negotiation</A>
- description page. In addition, <CITE>Apache Week</CITE> carried an
- article on this subject entitled
- "<A HREF="http://www.apacheweek.com/features/negotiation" REL="Help"
- ><CITE>Content Negotiation Explained</CITE></A>".
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="putsupport">
- <STRONG>Why can't I publish to my Apache server using PUT on
- Netscape Gold and other programs?</STRONG>
- </A>
- <P>
- Because you need to install and configure a script to handle
- the uploaded files. This script is often called a "PUT" handler.
- There are several available, but they may have security problems.
- Using FTP uploads may be easier and more secure, at least for now.
- For more information, see the <CITE>Apache Week</CITE> article
- <A HREF="http://www.apacheweek.com/features/put"
- ><CITE>Publishing Pages with PUT</CITE></A>.
- </P>
- <HR>
- </LI>
-
- <LI><A NAME="SSL-i">
- <STRONG>Why doesn't Apache include SSL?</STRONG>
- </A>
- <P>
- SSL (Secure Socket Layer) data transport requires encryption, and many
- governments have restrictions upon the import, export, and use of
- encryption technology. If Apache included SSL in the base package,
- its distribution would involve all sorts of legal and bureaucratic
- issues, and it would no longer be freely available. Also, some of
- the technology required to talk to current clients using SSL is
- patented by <A HREF="http://www.rsa.com/">RSA Data Security</A>,
- who restricts its use without a license.
- </P>
- <P>
- Some SSL implementations of Apache are available, however; see the
- "<A HREF="http://www.apache.org/related_projects.html"
- >related projects</A>"
- page at the main Apache web site.
- </P>
- <P>
- You can find out more about this topic in the <CITE>Apache Week</CITE>
- article about
- <A HREF="http://www.apacheweek.com/features/ssl" REL="Help"
- ><CITE>Apache and Secure Transactions</CITE></A>.
- </P>
- <HR>
- </LI>
- <LI><A NAME="footer">
- <STRONG>How can I attach a footer to my documents
- without using SSI?</STRONG>
- </A>
- <P>
- You can make arbitrary changes to static documents by configuring an
- <A HREF="http://www.apache.org/docs/mod/mod_actions.html#action">
- Action</A> which launches a CGI script. The CGI is then
- responsible for setting a content-type and delivering the requested
- document (the location of which is passed in the
- <SAMP>PATH_TRANSLATED</SAMP> environment variable), along with
- whatever footer is needed.
- </P>
- <P>
- Busy sites may not want to run a CGI script on every request, and
- should consider using an Apache module to add the footer. There are
- several third party modules available through the <A
- HREF="http://modules.apache.org/">Apache Module Registry</A> which
- will add footers to documents. These include mod_trailer, PHP
- (<SAMP>php3_auto_append_file</SAMP>), mod_layout, and mod_perl
- (<SAMP>Apache::Sandwich</SAMP>).
- </P>
- <HR>
- </LI>
- <LI><A NAME="search">
- <STRONG>Does Apache include a search engine?</STRONG>
- </A>
- <P>Apache does not include a search engine, but there are many good
- commercial and free search engines which can be used easily with
- Apache. Some of them are listed on the <A
- HREF="http://www.searchtools.com/tools/tools.html">Web Site Search
- Tools</A> page. Open source search engines that are often used with
- Apache include <A HREF="http://www.htdig.org/">ht://Dig</A> and <A
- HREF="http://sunsite.berkeley.edu/SWISH-E/">SWISH-E</A>.
- </P>
- <HR>
- </LI>
- <LI><A NAME="rotate">
- <STRONG>How can I rotate my log files?</STRONG>
- </A>
- <P>The simple answer: by piping the transfer log into an appropriate
- log file rotation utility.</P>
-
- <P>The longer answer: In the
- src/support/ directory, you will find a utility called <a
- href="../programs/rotatelogs.html">rotatelogs</a> which can be used
- like this:</p>
-
- <PRE>TransferLog "|/path/to/rotatelogs
- /path/to/logs/access_log 86400"</PRE>
-
- <p>to enable daily rotation of
- the log files.<BR>
- A more sophisticated solution of a logfile
- rotation utility is available under the name <CODE>cronolog</CODE>
- from Andrew Ford's site at <A
- HREF="http://www.ford-mason.co.uk/resources/cronolog/"
- >http://www.ford-mason.co.uk/resources/cronolog/</A>. It can
- automatically create logfile subdirectories based on time and date,
- and can have a constant symlink point to the rotating logfiles. (As
- of version 1.6.1, cronolog is available under the <A
- HREF="../LICENSE">Apache License</A>). Use it like this:</p>
-
- <PRE>CustomLog "|/path/to/cronolog
- --symlink=/usr/local/apache/logs/access_log
- /usr/local/apache/logs/%Y/%m/access_log" combined </PRE>
-
- <HR>
- </LI>
- <LI><A NAME="conditional-logging">
- <STRONG>How do I keep certain requests from appearing
- in my logs?</STRONG></A>
- <P>
- The maximum flexibility for removing unwanted information from
- log files is obtained by post-processing the logs, or using
- piped-logs to feed the logs through a program which does whatever
- you want. However, Apache does offer the ability to prevent
- requests from ever appearing in the log files. You can do this by
- using the
- <A HREF="../mod/mod_setenvif.html#SetEnvIf"><CODE>SetEnvIf</CODE></A>
- directive to set an environment variable for certain requests and
- then using the conditional
- <A HREF="../mod/mod_log_config.html#customlogconditional"><CODE>CustomLog</CODE></A>
- syntax to prevent logging when the environment variable is set.
- </P>
- <HR>
- </LI>
-
-</OL>
-<!--#endif -->
-<!--#if expr="$STANDALONE" -->
- <!-- Don't forget to add HR tags at the end of each list item.. -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>
-<!--#endif -->
+++ /dev/null
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<HTML>
- <HEAD>
- <TITLE>Apache Server Frequently Asked Questions</TITLE>
-<!--#set var="FAQMASTER" value="YES" -->
- </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">Apache Server Frequently Asked Questions</H1>
- <P>
- $Revision: 1.147 $ ($Date: 2001/02/28 03:36:00 $)
- </P>
- <P>
- The latest version of this FAQ is always available from the main
- Apache web site, at
- <<A
- HREF="http://www.apache.org/docs/misc/FAQ.html"
- REL="Help"
- ><SAMP>http://www.apache.org/docs/misc/FAQ.html</SAMP></A>>.
- </P>
-<!-- Notes about changes: -->
-<!-- - If adding a relative link to another part of the -->
-<!-- documentation, *do* include the ".html" portion. There's a -->
-<!-- good chance that the user will be reading the documentation -->
-<!-- on his own system, which may not be configured for -->
-<!-- multiviews. -->
-<!-- - When adding items, make sure they're put in the right place -->
-<!-- - verify that the numbering matches up. -->
-<!-- - *Don't* use <PRE></PRE> blocks - they don't appear -->
-<!-- correctly in a reliable way when this is converted to text -->
-<!-- with Lynx. Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL> -->
-<!-- blocks inside a <P></P> instead. This is necessary to get -->
-<!-- the horizontal and vertical indenting right. -->
-<!-- - Don't forget to include an HR tag after the last /P tag -->
-<!-- but before the /LI in an item. -->
- <P>
- If you are reading a text-only version of this FAQ, you may find numbers
- enclosed in brackets (such as "[12]"). These refer to the list of
- reference URLs to be found at the end of the document. These references
- do not appear, and are not needed, for the hypertext version.
- </P>
- <H2>The Questions</H2>
-<!-- Stuff to Add: -->
-<!-- - can't bind to port 80 -->
-<!-- - permission denied -->
-<!-- - address already in use -->
-<!-- - mod_auth & passwd lines "user:pw:.*" - ++1st colon onward is -->
-<!-- treated as pw, not just ++1st to \-\-2nd. -->
-<!-- - SSL: -->
-<!-- - Can I use Apache-SSL for free in Canada? -->
-<!-- - Why can't I use Apache-SSL in the U.S.? -->
-<!-- - How can I found out how many visitors my site gets? -->
-<!-- - How do I add a counter? -->
-<!-- - How do I configure Apache as a proxy? -->
-<!-- - What browsers support HTTP/1.1? -->
-<!-- - What's the point of vhosts-by-name is there aren't any -->
-<!-- HTTP/1.1 browsers? -->
-<!-- - Is there an Apache for W95/WNT? -->
-<!-- - Why does Apache die when a vhost can't be DNS-resolved? -->
-<!-- - Why do I get "send lost connection" messages in my error -->
-<!-- log? -->
-<!-- - specifically consider .pdf files which seem to cause this -->
-<!-- a lot when accessed via the plugin ... and also mention -->
-<!-- how range-requests can cause bytes served < file size -->
-<!-- - Why do directory indexes appear as garbage? (A: -lucb) -->
-<!-- - How do I add a footer to all pages offered by my server? -->
-<!-- - Fix midi question; a bigger problem than midi vs. x-midi is -->
-<!-- the simple fact that older versions of Apache (and new ones -->
-<!-- that have been upgraded without upgrading the mime.types -->
-<!-- file) don't have the type listed at all. -->
-<!-- - RewriteRule /~fraggle/* /cgi-bin/fraggle.pl does not work -->
-<!-- - how do I disable authentication for a subdirectory? -->
-<!-- (A: you can't but "Satisfy any; Allow from all" can be close -->
-<!-- - '400 malformed request' on Win32 might mean stale proxy; see -->
-<!-- PR #2300. -->
-<!-- - how do I tell what version of Apache I am running? -->
-<OL TYPE="A">
-<!--#include virtual="FAQ-A.html?TOC" -->
-<!--#include virtual="FAQ-B.html?TOC" -->
-<!--#include virtual="FAQ-C.html?TOC" -->
-<!--#include virtual="FAQ-D.html?TOC" -->
-<!--#include virtual="FAQ-E.html?TOC" -->
-<!--#include virtual="FAQ-F.html?TOC" -->
-<!--#include virtual="FAQ-G.html?TOC" -->
-<!--#include virtual="FAQ-H.html?TOC" -->
-<!--#include virtual="FAQ-I.html?TOC" -->
-</OL>
-
-<HR>
-
- <H2>The Answers</H2>
-<!--#include virtual="FAQ-A.html?" -->
-<!--#include virtual="FAQ-B.html?" -->
-<!--#include virtual="FAQ-C.html?" -->
-<!--#include virtual="FAQ-D.html?" -->
-<!--#include virtual="FAQ-E.html?" -->
-<!--#include virtual="FAQ-F.html?" -->
-<!--#include virtual="FAQ-G.html?" -->
-<!--#include virtual="FAQ-H.html?" -->
-<!--#include virtual="FAQ-I.html?" -->
-
-<!--#include virtual="footer.html" -->
-</BODY>
-</HTML>