You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs@httpd.apache.org by Apache Wiki <wi...@apache.org> on 2013/03/25 00:38:37 UTC

[Httpd Wiki] Update of "FAQ" by niq

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Httpd Wiki" for change notification.

The "FAQ" page has been changed by niq:
http://wiki.apache.org/httpd/FAQ?action=diff&rev1=31&rev2=32

  <<TableOfContents()>>
  
  = Background =
- 
  == What is Apache? ==
- 
  The Apache HTTP Server
  
   * is a powerful, flexible, HTTP/1.1 compliant web server
@@ -21, +19 @@

   * is actively being developed
   * encourages user feedback through new ideas, bug reports and patches
   * implements many frequently requested features, including:
- 
    * DBM databases as well, as relational databases and LDAP for authentication
    * allows you to easily set up password-protected pages with enormous numbers of authorized users, without bogging down the server.
    * Customized responses to errors and problems
@@ -33, +30 @@

    * Configurable Reliable Piped Logs - 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.
  
  == How and why was Apache HTTP Server created? ==
- 
  The [[http://httpd.apache.org/ABOUT_APACHE.html|About Apache 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.
  
  == Why the name "Apache"? ==
- 
  The name 'Apache' was chosen from respect for the Native American Indian tribe of Apache (Indé), well-known for their superior skills in warfare strategy and their inexhaustible endurance. For more information on the Apache Nation, we suggest searching Google, or AllTheWeb.
  
  Secondarily, and more popularly (though incorrectly) accepted, it's a considered cute name which stuck. Apache is "A PAtCHy server". It was based on some existing code and a series of "patch files".
@@ -45, +40 @@

  These days Apache as such means much more. It's first and foremost the Apache Software Foundation, under which there are dozens of projects.
  
  == How does Apache httpd performance compare to other servers? ==
- 
  Benchmarks tend to be a measure of configuration competance, rather than of server quality. That is, if you're an expert in IIS, you can probably get it to run faster than you can get Apache to run. You can therefore find comparisions of various HTTP servers that prove that each is faster than all the others. We tend to take server performance benchmarks with a grain of salt.
  
  == How thoroughly tested is Apache httpd? ==
- 
  Apache is run on over 120 million Internet servers (as of April 2010) (Source, [[http://news.netcraft.com/archives/category/web-server-survey/|Netcraft]]). It has been tested thoroughly by both developers and users. The Apache HTTP Server Project Management Committee 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.
  
  == What are the future plans for Apache httpd? ==
- 
   * to continue to be an "open source" no-charge-for-use HTTP server,
   * to keep up with advances in HTTP protocol and web developments in general,
   * to collect suggestions for fixes/improvements from its users,
   * to respond to needs of large volume providers as well as occasional users.
  
  == Whom do I contact for support? ==
- See [[http://httpd.apache.org/support.html]].
+ See http://httpd.apache.org/support.html.
  
  == Is there any more information available on Apache httpd? ==
  Indeed there is. See the [[http://httpd.apache.org|main Apache web server site]]. There are also many books about the Apache HTTP Server available.
@@ -75, +67 @@

  You may NOT use any original artwork from the Apache Software Foundation, nor make or use modified versions of such artwork, except under the conditions in the  [[http://www.apache.org/foundation/marks/|Apache Trademark Policy]] document.
  
  = B. General Technical Questions =
- 
  == "Why can't I ...? Why won't ... work?" What to do in case of problems ==
  If you are having trouble with your Apache server software, you should take the following steps:
  
   Check the errorlog!:: 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 /usr/local/apache/logs/error_log, but see the ErrorLog directive in your config files for the location on your server.
- 
   Check the FAQ!:: You're already here.
- 
   Check the Apache bug database:: Most problems that get reported to The Apache Group are recorded in the bug database. Please check the existing reports, open and closed, before adding one. If you find that your issue has already been reported, please don't 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.
- 
   Ask in a user support group:: A lot of common problems never make it to the bug database because there's already high Q&A traffic about them in the Users mailing list or comp.infosystems.www.servers.unix and related newsgroups. These newsgroups are also available via Google. Many Apache users, and some of the developers, can be found roaming their 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 don't see your question already posted.
- 
   If all else fails, report the problem in the bug database:: If you've gone through those steps above that are appropriate and have obtained no relief, then please do let The Apache Group know about the problem by logging a bug report.
  
  If your problem involves the server crashing and generating a core dump, please include a backtrace (if possible). As an example,
  
-  {{{
+  . {{{
  # cd ServerRoot
  # dbx httpd core
  (dbx) where
  }}}
+ 
  (Substitute the appropriate locations for your ServerRoot and your httpd and core files. You may have to use gdb instead of dbx.)
  
  == How do I submit a patch to Apache httpd? ==
- 
  Detailed information for submitting bug reports and patches may be found in the [[http://httpd.apache.org/dev/|Apache HTTP Server developer documentation]].
  
  == Why has Apache stolen my favourite site's Internet address? ==
@@ -111, +98 @@

  No marketing spam originates from the Apache site. The only mail that comes from the site goes only to addresses that have been requested to receive the mail.
  
  == May I include the Apache software on a CD or other package I'm distributing? ==
- The detailed answer to this question can be found in the Apache license, which is included in the Apache distribution in the file LICENSE. You can also find it on the Web at [[http://www.apache.org/licenses/]].
+ The detailed answer to this question can be found in the Apache license, which is included in the Apache distribution in the file LICENSE. You can also find it on the Web at http://www.apache.org/licenses/.
  
  == What's the best hardware/operating system/... How do I get the most out of my Apache Web server? ==
  Check out the [[http://httpd.apache.org/docs/current/misc/perf-tuning.html|performance tuning page]].
@@ -124, +111 @@

  == Why isn't there a binary for my platform? ==
  The developers make sure that the software builds and works correctly on the platforms available to them; this does not necessarily mean that your 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.
  
- If you don't see a kit for your platform listed in the binary distribution area ([[http://httpd.apache.org/dist/httpd/binaries/]]), 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.
+ If you don't see a kit for your platform listed in the binary distribution area (http://httpd.apache.org/dist/httpd/binaries/), 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.
  
  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 do 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.
  
  = C. Building Apache httpd =
- 
  == Why do I get an error about an undefined reference to "__inet_ntoa" or other __inet_* symbols? ==
  If you have installed BIND-8 then this is normally due to a conflict between your include files and your libraries. BIND-8 installs its include files and libraries /usr/local/include/ and /usr/local/lib/, while the resolver that comes with your system is probably installed in /usr/include/ and /usr/lib/. If your system uses the header files in /usr/local/include/ before those in /usr/include/ but you do not use the new resolver library, then the two versions will conflict.
  
@@ -137, +123 @@

  
  Note:As of BIND 8.1.1, the bind libraries and files are installed under /usr/local/bind 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:
  
+ EXTRA_CFLAGS=-I/usr/local/bind/include EXTRA_LDFLAGS=-L/usr/local/bind/lib EXTRA_LIBS=-lbind
- EXTRA_CFLAGS=-I/usr/local/bind/include
- EXTRA_LDFLAGS=-L/usr/local/bind/lib
- EXTRA_LIBS=-lbind
  
  == I get an error about "configure failed for srclib/apr" ==
  ''This only applies to Apache 2.4 and later''
@@ -153, +137 @@

   Your system's C compiler is garbage.:: 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 gcc.
   Your include files may be confused.:: 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.
   Your operating system or compiler may be out of revision.:: 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.
+ 
  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 problem report. Be sure to include complete details, such as the compiler & OS versions and exact error messages.
  
  == Why do I get complaints about redefinition of "struct iovec" when compiling under Linux? ==
  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:
  
+ Remove the definition of struct iovec from your C library includes. It is located in /usr/include/sys/uio.h. Or, Add -DNO_WRITEV to the EXTRA_CFLAGS line in your Configuration and reconfigure/rebuild. This hurts performance and should only be used as a last resort.
- Remove the definition of struct iovec from your C library includes. It is located in /usr/include/sys/uio.h. Or,
- Add -DNO_WRITEV to the EXTRA_CFLAGS line in your Configuration and reconfigure/rebuild. This hurts performance and should only be used as a last resort.
  
  == I'm using gcc and I get some compilation errors, what is wrong? ==
  GCC parses your system header files and produces a modified subset which it uses for compiling. This behavior 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.
@@ -167, +151 @@

  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 readv, writev, or uio.h. This is not a bug with Apache. You will need to re-install GCC.
  
  = D. Error Log Messages and Problems Starting Apache =
- 
  == Why do I get "setgid: Invalid argument" at startup? ==
  Your Group directive (probably in conf/httpd.conf) needs to name a group that actually exists in the /etc/group file (or your system's equivalent). This problem is also frequently seen when a negative number is used in the Group directive (e.g., "Group #-1"). Using a group name -- not group number -- found in your system's group database should solve this problem in all cases.
  
@@ -199, +182 @@

  }}}
  The directory should not be generally writable (e.g., don't use /var/tmp). See the LockFile documentation for more information.
  
- 
  == When I try to start Apache from a DOS window, I get a message like "Cannot determine host name. Use ServerName directive to set it manually." What does this mean? ==
  It means what it says; the Apache software can't determine the hostname of your system. Edit your conf\httpd.conf file, look for the string "ServerName", and make sure there's an uncommented directive such as
  
- ServerName localhost
+ ServerName localhost or
- or
  
- ServerName www.foo.com
- in the file. Correct it if there one there with wrong information, or add one if you don't already have one.
+ ServerName www.foo.com in the file. Correct it if there one there with wrong information, or add one if you don't already have one.
  
  Also, make sure that your Windows system has DNS enabled. See the TCP/IP setup component of the Networking or Internet Options control panel.
  
@@ -216, +196 @@

  == When I try to start Apache on Windows, I get a message like "System error 1067 has occurred. The process terminated unexpectedly." What does this mean? ==
  This message means that the Web server was unable to start correctly for one reason or another. To find out why, execute the following commands in a DOS window:
  
-     c:
-     cd "\Program Files\Apache Group\Apache"
+  . c: cd "\Program Files\Apache Group\Apache" apache
-     apache
  
  (If you don't get the prompt back, hit Control-C to cause Apache to exit.)
  
@@ -236, +214 @@

    [Thu Jun  6 04:02:01 2002] [notice] SIGHUP received.  Attempting to restart
    [Thu Jun  6 04:02:02 2002] [notice] Apache configured -- resuming normal operations
  }}}
- 
  Check your cron jobs to see when/if your server logs are being rotated. Compare the time of rotation to the error message time. If they are the same, you can somewhat safely assume that the restart is due to your server logs being rotated.
  
  == Why am I getting "module module-name is not compatible with this version of Apache" messages in my error log? ==
@@ -244, +221 @@

  
  If you're getting the above error messages, contact the vendor of the module for the new binary, or compile it if you have access to the source code.
  
+ == I've downloaded a module from a source I trust, but my LoadModule line is a syntax error? ==
+ Have you checked for simple errors like a typo, or an incorrect path to the module?
+ 
+ Another reason you may be unable to load a module is if it relies on libraries (Unix-family .so or Windows .dll) that are not loaded into the server.  Such libraries can be loaded using the '''LoadFile''' directive, which must appear '''before''' your LoadModule line in the configuration.  The module's provider should document any such dependencies.
+ 
+ There's a particular Gotcha on Windows:
+ 
+  {{{
+ httpd: Syntax error on line nn of C:/IBM/HTTP/conf/httpd.conf: Cannot load C:/IBM/HTTP/modules/mod_foo.so into server: The specified module could not be found.
+ }}}
+ Googling the error message tells us there's a missing library, but there doesn't appear to be, and the identical configuration works on one computer but fails with this message on another.  What gives?
+ 
+ This error may happen because you need to install the Windows C Runtime Libraries on the target machine.  Note that this doesn't mean you need to load them explicitly into HTTPD, just install them on the host machine!  This is likely to affect users of IBM's httpd trying to load modules not supplied by IBM, and might arise in other circumstances where the server and the module are compiled using different build options.
+ 
  = E. Configuration Questions =
- 
  == Why can't I run more than <n> virtual hosts? ==
  You are probably running into resource limitations in your operating system. The most common limitation is the per-process limit on file descriptors, 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 gethostbyname()) which needs file descriptors and doesn't complain intelligibly when it can't get them.
  
+ Each log file requires a file descriptor, which means that if you are using separat
+ 
+ {{{
+ Syntax error on line nn of C:/IBM/HTTP/conf/load_modules.conf
+ }}}
- 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 Listen directive also needs a file descriptor.
+ e access and error logs for each virtual host, each virtual host needs two file descriptors. Each Listen directive also needs a file descriptor.
  
  Typical values for <n> that we've seen are in the neighborhood of 1024 or 2048. 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.
  
@@ -258, +253 @@

   Reduce the number of Listen 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.
   Reduce the number of log files:: You can use mod_log_config 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 distribution in the src/support/split-logfile file.
   Increase the number of file descriptors available to the server:: (see your system's documentation on the limit or ulimit commands). For some systems, information on how to do this is available in the performance hints page. There is a specific note for FreeBSD below.
- 
-  "Don't do that" - try to run with fewer virtual hosts::
+  "Don't do that" - try to run with fewer virtual hosts:: <<BR>>
- Spread your operation across multiple server processes (using Listen for example, but see the first point) and/or ports.
- Since this is an operating-system limitation, there's not much else available in the way of solutions.
  
+ Spread your operation across multiple server processes (using Listen for example, but see the first point) and/or ports. Since this is an operating-system limitation, there's not much else available in the way of solutions.
  
  == Why doesn't my ErrorDocument 401 work? ==
  You need to use it with a URL in the form "/foo/bar" and not one with a method and hostname such as "http://host/foo/bar". See the ErrorDocument documentation for details. This was incorrectly documented in the past.
@@ -291, +284 @@

  
  The other thing that can occasionally cause this symptom is a misunderstanding of the Alias directive, resulting in an alias working with a trailing slash, and not without one. The Alias directive is very literal, and aliases what you tell it to. Consider the following example:
  
-         Alias /example/ /home/www/example/
+  . Alias /example/ /home/www/example/
  
  The above directive creates an alias for URLs starting with /example/, but does not alias URLs starting with /example. That is to say, a URL such as http://servername.com/example/ will get the desired content, but a URL such as http://servername.com/example will result in a "file not found" error.
  
  The following Alias, on the other hand, will work for both cases:
  
-         Alias /example /home/www/example
+  . Alias /example /home/www/example
  
  == Why doesn't mod_info list any directives? ==
  The mod_info module allows you to use a Web browser to see how your server is configured. Among the information it displays is the list of 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 User directive), then mod_info cannot read them in order to list their values. An entry will be made in the error log in this event, however.
  
  == My .htaccess files are being ignored. ==
- This is almost always due to your AllowOverride directive being set incorrectly for the directory in question. If it is set to None then .htaccess files will not even be looked for. That is a good thing. If you have access to edit the httpd.conf, you should not use .htaccess files, ever. If your customers do need support for .htaccess, make sure that AllowOverride is set to something sensible (i.e.: Not All).
+ This is almost always due to your AllowOverride directive being set incorrectly for the directory in question. If it is set to None then .htaccess files will not even be looked for. That is a good thing. If you have access to edit the httpd.conf, you should not use .htaccess files, ever. If your customers do need support for .htaccess, make sure that AllowOverride is set to something sensible (i.e.: Not All). 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 Directory container.
- 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 Directory container.
  
  You can tell if this is your problem by adding nonsense text to your .htaccess file and reloading the page.  If you ''do not'' get a server error, then Apache httpd is not reading your .htaccess file.
  
@@ -329, +321 @@

  There are two techniques to implement canonical hostnames:
  
  === Use mod_rewrite as described in the "Canonical Hostnames" section of the URL Rewriting Guide. ===
- See [[http://httpd.apache.org/docs/current/rewrite/rewrite_guide.html#canonicalurl]].
+ See http://httpd.apache.org/docs/current/rewrite/rewrite_guide.html#canonicalurl.
+ 
  === Use name-based virtual hosting: ===
-  {{{
+  . {{{
  NameVirtualHost *:80
  <VirtualHost *:80>
    ServerName www.example.net
@@ -353, +346 @@

  
  To turn on automatic directory indexing, find the Options directive that applies to the directory and add the Indexes keyword. For example:
  
-  {{{
+  . {{{
  <Directory /path/to/directory>
     Options +Indexes
  </Directory>
  }}}
+ 
  To turn off automatic directory indexing, remove the Indexes keyword from the appropriate Options line. To turn off directory listing for a particular subdirectory, you can use Options -Indexes. For example:
+ 
-  {{{
+  . {{{
  <Directory /path/to/directory>
     Options -Indexes
  </Directory>
@@ -374, +369 @@

  </Directory>
  Options Includes ExecCGI
  }}}
- 
  Includes and ExecCGI will be off in the /usr/local/apache/htdocs directory.
  
  You can usually avoid problems by either finding the Options directive that already applies to a specific directory and changing it, or by putting your Options directive inside the most specific possible <Directory> section.
@@ -384, +378 @@

  
  For example:
  
- Server: Apache/2.2.17 (Unix) mod_perl/1.26
- Frequently, people want to remove this information, under the mistaken understanding that this will make the system more secure. This is probably not the case, as the same exploits will likely be attempted regardless of the header information you provide.
+ Server: Apache/2.2.17 (Unix) mod_perl/1.26 Frequently, people want to remove this information, under the mistaken understanding that this will make the system more secure. This is probably not the case, as the same exploits will likely be attempted regardless of the header information you provide.
  
  There are, however, two answers to this question: the correct answer, and the answer that you are probably looking for.
  
  The correct answer to this question is that you should use the ServerTokens directive to alter the quantity of information which is passed in the headers. Setting this directive to Prod will pass the least possible amount of information:
  
- Server: Apache
- The answer you are probably looking for is how to make Apache lie about what what it is, ie send something like:
+ Server: Apache The answer you are probably looking for is how to make Apache lie about what what it is, ie send something like:
  
- Server: Bob's Happy HTTPd Server
- In order to do this, you will need to modify the Apache source code and rebuild Apache. This is not advised, as it is almost certain not to provide you with the added security you think that you are gaining. The exact method of doing this is left as an exercise for the reader, as we are not keen on helping you do something that is intrinsically a bad idea.
+ Server: Bob's Happy HTTPd Server In order to do this, you will need to modify the Apache source code and rebuild Apache. This is not advised, as it is almost certain not to provide you with the added security you think that you are gaining. The exact method of doing this is left as an exercise for the reader, as we are not keen on helping you do something that is intrinsically a bad idea.
  
  == Why do I see requests for other sites appearing in my log files? ==
  An access_log entry showing this situation could look like this:
  
- 63.251.56.142 - - [25/Jul/2002:12:48:04 -0700] "GET http://www.yahoo.com/ HTTP/1.0" 200 1456
- The question is: why did a request for www.yahoo.com come to your server instead of Yahoo's server? And why does the response have a status code of 200 (success)?
+ 63.251.56.142 - - [25/Jul/2002:12:48:04 -0700] "GET http://www.yahoo.com/ HTTP/1.0" 200 1456 The question is: why did a request for www.yahoo.com come to your server instead of Yahoo's server? And why does the response have a status code of 200 (success)?
  
  This is usually the result of malicious clients trying to exploit open proxy servers to access a website without revealing their true location. If you find entries like this in your log, the first thing to do is to make sure you have properly configured your server not to proxy for unknown clients. If you don't need to provide a proxy server at all, you should simply assure that the ProxyRequests directive is not set on. If you do need to run a proxy server, then you must ensure that you secure your server properly so that only authorized clients can use it.
  
@@ -427, +417 @@

  </VirtualHost>
  ...
  }}}
- 
  = F. Dynamic Content (CGI and SSI) =
- 
  == How do I enable CGI execution in directories other than the ScriptAlias? ==
  Apache recognizes all files in a directory named as a ScriptAlias 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 "*.cgi" or "*.pl" or whatever. In other words, all files in a ScriptAlias directory are scripts, as far as Apache is concerned.
  
  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 AddHandler directive.
  
+ In an appropriate section of your server configuration files, add a line such as AddHandler cgi-script .cgi The server will then recognize that all files in that location (and its logical descendants) that end in ".cgi" are script files, not documents.
- In an appropriate section of your server configuration files, add a line such as
- AddHandler cgi-script .cgi
- The server will then recognize that all files in that location (and its logical descendants) that end in ".cgi" are script files, not documents.
  
- Make sure that the directory location is covered by an Options declaration that includes the ExecCGI option.
- In some situations, you might not want to actually allow all files named "*.cgi" 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 via mod_rewrite and the following steps:
+ Make sure that the directory location is covered by an Options declaration that includes the ExecCGI option. In some situations, you might not want to actually allow all files named "*.cgi" 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 via mod_rewrite and the following steps:
  
  Locally add to the corresponding .htaccess file a ruleset similar to this one:
+ 
  {{{
  RewriteEngine on
  RewriteBase /~foo/bar/
@@ -467, +453 @@

   select ($current_file_handle);
  }
  }}}
- 
  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 off (with $| = 0 or the equivalent) after the statements that send the headers, as displayed above.
  
  If your script isn't written in Perl, do the equivalent thing for whatever language you are using (e.g., for C, call fflush() after writing the headers).
@@ -489, +474 @@

   * Build your server with the mod_include module. This is normally compiled in by default.
   * Make sure your server configuration files have an Options directive which permits Includes.
   * Make sure that the directory where you want the SSI documents to live is covered by the "INCLUDEES" content filter, either explicitly or in some ancestral location. That can be done with the following directives:
+ 
  {{{
  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml
@@ -519, +505 @@

  There are many ways to give each user directory a cgi-bin directory such that anything requested as http://example.com/~user/cgi-bin/program will be executed as a CGI script. Two alternatives are:
  
  Place the cgi-bin directory next to the public_html directory:
+ 
  {{{
  ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2
  Place the cgi-bin directory underneath the public_html directory:
@@ -530, +517 @@

  If you are using suexec, the first technique will not work because CGI scripts must be stored under the public_html directory.
  
  = G. Authentication and Access Restrictions =
- 
  == Why isn't restricting access by host or domain name working correctly? ==
  Two of the most common causes of this are:
  
-  An error, inconsistency, or unexpected mapping in the DNS registration::
+  An error, inconsistency, or unexpected mapping in the DNS registration:: <<BR>>
+ 
  This happens frequently: your configuration restricts access to Host.FooBar.Com, but you can't get in from that host. The usual reason for this is that Host.FooBar.Com is actually an alias for another name, and when Apache performs the address-to-name lookup it's getting the real name, not Host.FooBar.Com. 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.
+ 
-  Inadequate checking and verification in your configuration of Apache::
+  Inadequate checking and verification in your configuration of Apache:: <<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 this to your configuration:
+ 
  {{{
  HostnameLookups Double
  }}}
@@ -593, +583 @@

   * 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!"
   * Since HTTP is stateless, information about the authentication is transmitted each and every time 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.
   * 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"?
+ 
  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.
  
  == Why does Apache ask for my password twice before serving a file? ==
@@ -603, +594 @@

  To eliminate this problem you should
  
   * Always use the trailing slash when requesting directories;
-  * Change the ServerName to match the name you are using in the URL; 
+  * Change the ServerName to match the name you are using in the URL;
   * and/or Set UseCanonicalName off.
  
  == How can I prevent people from "stealing" the images from my web site? ==
@@ -626, +617 @@

  Further examples can be found in the Environment Variables documentation.
  
  = H. URL Rewriting =
- 
  == Where can I find mod_rewrite rulesets which already solve particular URL-related problems? ==
  There is a collection of practical solutions that can be found in the [[http://httpd.apache.org/docs/current/rewrite/|URL Rewriting Guide]]. If you have more interesting rulesets which solve particular problems not currently covered in this document, open a doc suggestion in bugzilla to add it. The other webmasters will thank you for avoiding the reinvention of the wheel.
  
@@ -656, +646 @@

  There is only one ugly solution: You have to surround the complete flag argument by quotation marks ("[E=...]"). Notice: The argument to quote here is not the argument to the E-flag, it is the argument of the Apache config file parser, i.e., the third argument of the RewriteRule here. So you have to write "[E=any text with whitespaces]".
  
  = I. Features =
- 
  == Does or will Apache act as a Proxy server? ==
- 
  [[http://httpd.apache.org/docs/current/mod/mod_proxy.html|mod_proxy]] provides proxying functionality for a variety of protocols.
  
  == What are "multiviews"? ==
@@ -679, +667 @@

  The simple answer: by piping the transfer log into an appropriate log file rotation utility.
  
  The longer answer: In the src/support/ directory, you will find a utility called rotatelogs which can be used like this:
+ 
  {{{
     TransferLog "|/path/to/rotatelogs /path/to/logs/access_log 86400
  }}}
- to enable daily rotation of the log files.
- A more sophisticated solution of a logfile rotation utility is available under the name cronolog from Andrew Ford's site at http://www.cronolog.org/. 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 Apache License). Use it like this:
+ to enable daily rotation of the log files. A more sophisticated solution of a logfile rotation utility is available under the name cronolog from Andrew Ford's site at http://www.cronolog.org/. 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 Apache License). Use it like this:
+ 
  {{{
     CustomLog "|/path/to/cronolog --symlink=/usr/local/apache/logs/access_log /usr/local/apache/logs/%Y/%m/access_log" combined
  }}}
- 
  == How do I keep certain requests from appearing in my logs? ==
  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 SetEnvIf directive to set an environment variable for certain requests and then using the conditional CustomLog syntax to prevent logging when the environment variable is set.
  
@@ -699, +687 @@

  
   * Apache::ASP
   * mod_mono
+ 
  See also the related projects page to find out more.
  
  == Does Apache come with Java support? ==

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-unsubscribe@httpd.apache.org
For additional commands, e-mail: docs-help@httpd.apache.org