coar 97/07/06 10:19:26
Modified: htdocs/manual content-negotiation.html custom-error.html dns-caveats.html env.html host.html install.html invoking.html man-template.html multilogs.html new_features_1_0.html new_features_1_2.html new_features_1_3.html process-model.html suexec.html vhosts-in-depth.html virtual-host.html htdocs/manual/misc API.html FAQ.html client_block_api.html compat_notes.html descriptors.html fin_wait_2.html known_bugs.html nopgp.html perf-bsd44.html perf-dec.html perf.html security_tips.html vif-info.html htdocs/manual/mod core.html directives.html index.html mod_access.html mod_actions.html mod_alias.html mod_auth_anon.html mod_auth_dbm.html mod_cern_meta.html mod_dir.html mod_env.html mod_imap.html mod_include.html mod_negotiation.html mod_proxy.html mod_rewrite.html mod_status.html mod_userdir.html Log: More HTML cleanups, retrofit of intentional <XA> tag to a no-op <A NAME> (thanks, Marc). Lots of trailing blanks removed throughout. Small addition to the new_features_1_3 page. Plenty of cleanup still to come.. Revision Changes Path 1.11 +11 -11 apache/htdocs/manual/content-negotiation.html Index: content-negotiation.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/content-negotiation.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** content-negotiation.html 1997/06/04 11:07:47 1.10 --- content-negotiation.html 1997/07/06 17:18:52 1.11 *************** *** 22,28 **** couple of features to give more intelligent handling of requests from browsers which send incomplete negotiation information. <p> ! Content negotiation is provided by the <a href="mod/mod_negotiation.html">mod_negotiation</a> module, which is compiled in by default. --- 22,28 ---- couple of features to give more intelligent handling of requests from browsers which send incomplete negotiation information. <p> ! Content negotiation is provided by the <a href="mod/mod_negotiation.html">mod_negotiation</a> module, which is compiled in by default. *************** *** 47,53 **** </pre> Note that this preference will only be applied when there is a choice ! of representations and they vary by language. <p> As an example of a more complex request, this browser has been --- 47,53 ---- </pre> Note that this preference will only be applied when there is a choice ! of representations and they vary by language. <p> As an example of a more complex request, this browser has been *************** *** 78,89 **** In order to negotiate a resource, the server needs to be given information about each of the variants. This is done in one of two ! ways: <ul> <li> Using a type map (i.e., a <code>*.var</code> file) which names the files containing the variants explicitly ! <li> Or using a 'MultiViews' search, where the server does an implicit filename pattern match, and chooses from among the results. </ul> --- 78,89 ---- In order to negotiate a resource, the server needs to be given information about each of the variants. This is done in one of two ! ways: <ul> <li> Using a type map (i.e., a <code>*.var</code> file) which names the files containing the variants explicitly ! <li> Or using a 'MultiViews' search, where the server does an implicit filename pattern match, and chooses from among the results. </ul> *************** *** 154,160 **** interpreted as URLs relative to the map file; they must be on the same server (!), and they must refer to files to which the client would be granted access if they were to be requested ! directly. <dt> <code>Content-type:</code> <dd> media type --- charset, level and "qs" parameters may be given. These are often referred to as MIME types; typical media types are --- 154,160 ---- interpreted as URLs relative to the map file; they must be on the same server (!), and they must refer to files to which the client would be granted access if they were to be requested ! directly. <dt> <code>Content-type:</code> <dd> media type --- charset, level and "qs" parameters may be given. These are often referred to as MIME types; typical media types are *************** *** 244,250 **** <tr><th>Dimension <th>Notes <tr><td>Media Type ! <td>Browser indicates preferences on Accept: header. Each item can have an associated quality factor. Variant description can also have a quality factor. <tr><td>Language --- 244,250 ---- <tr><th>Dimension <th>Notes <tr><td>Media Type ! <td>Browser indicates preferences on Accept: header. Each item can have an associated quality factor. Variant description can also have a quality factor. <tr><td>Language *************** *** 292,298 **** else the order of languages on the Accept-Language header. <li>Select the variants with the highest 'level' media parameter ! (used to give the version of text/html media types). <li>Select only unencoded variants, if there is a mix of encoded and non-encoded variants. If either all variants are encoded --- 292,298 ---- else the order of languages on the Accept-Language header. <li>Select the variants with the highest 'level' media parameter ! (used to give the version of text/html media types). <li>Select only unencoded variants, if there is a mix of encoded and non-encoded variants. If either all variants are encoded *************** *** 366,372 **** The explicit types have no quality factor, so they default to a preference of 1.0 (the highest). The wildcard */* is given a low preference of 0.01, so other types will only be returned if ! no variant matches an explicitly listed type. <p> If the Accept: header contains <i>no</i> q factors at all, Apache sets --- 366,372 ---- The explicit types have no quality factor, so they default to a preference of 1.0 (the highest). The wildcard */* is given a low preference of 0.01, so other types will only be returned if ! no variant matches an explicitly listed type. <p> If the Accept: header contains <i>no</i> q factors at all, Apache sets *************** *** 386,392 **** The reason for setting this language quality factor for variant with no language to a very low value is to allow for a default variant which can be supplied if none of the ! other variants match the browser's language preferences. For example, consider the situation with three variants: --- 386,392 ---- The reason for setting this language quality factor for variant with no language to a very low value is to allow for a default variant which can be supplied if none of the ! other variants match the browser's language preferences. For example, consider the situation with three variants: *************** *** 409,417 **** document, provided it is still within date. But if the resource is subject to content negotiation at the server, this would result in only the first requested variant being cached, and subsequent cache ! hits could return the wrong response. To prevent this, Apache normally marks all responses that are returned after content negotiation ! as non-cacheable by HTTP/1.0 clients. Apache also supports the HTTP/1.1 protocol features to allow caching of negotiated responses. <P> For requests which come from a HTTP/1.0 compliant client (either a --- 409,417 ---- document, provided it is still within date. But if the resource is subject to content negotiation at the server, this would result in only the first requested variant being cached, and subsequent cache ! hits could return the wrong response. To prevent this, Apache normally marks all responses that are returned after content negotiation ! as non-cacheable by HTTP/1.0 clients. Apache also supports the HTTP/1.1 protocol features to allow caching of negotiated responses. <P> For requests which come from a HTTP/1.0 compliant client (either a 1.10 +7 -8 apache/htdocs/manual/custom-error.html Index: custom-error.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/custom-error.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** custom-error.html 1997/06/24 18:39:30 1.9 --- custom-error.html 1997/07/06 17:18:53 1.10 *************** *** 29,41 **** response, then this response can be replaced with either some friendlier text or by a redirection to another URL (local or external). - <P> ! <DT>Old behavior ! <DD>NCSA httpd 1.3 would return some boring old error/problem message ! which would often be meaningless to the user, and would provide no means of logging the symptoms which caused it.<BR> <P> --- 29,40 ---- response, then this response can be replaced with either some friendlier text or by a redirection to another URL (local or external). <P> ! <DT>Old behavior ! <DD>NCSA httpd 1.3 would return some boring old error/problem message ! which would often be meaningless to the user, and would provide no means of logging the symptoms which caused it.<BR> <P> *************** *** 69,75 **** REDIRECT_URL=/cgi-bin/buggy.pl <br> </code></blockquote> ! <P>note the <code>REDIRECT_</code> prefix. <P>At least <code>REDIRECT_URL</code> and <code>REDIRECT_QUERY_STRING</code> will be passed to the new URL (assuming it's a cgi-script or a cgi-include). The --- 68,74 ---- REDIRECT_URL=/cgi-bin/buggy.pl <br> </code></blockquote> ! <P>note the <code>REDIRECT_</code> prefix. <P>At least <code>REDIRECT_URL</code> and <code>REDIRECT_QUERY_STRING</code> will be passed to the new URL (assuming it's a cgi-script or a cgi-include). The *************** *** 94,109 **** ErrorDocument 401 /Subscription/how_to_subscribe.html </code></blockquote> ! <P>The syntax is, <P><code><A HREF="mod/core.html#errordocument">ErrorDocument</A></code> ! <3-digit-code> action <P>where the action can be, <OL> <LI>Text to be displayed. Prefix the text with a quote ("). Whatever ! follows the quote is displayed. <em>Note: the (") prefix isn't displayed.</em> <LI>An external URL to redirect to. --- 93,108 ---- ErrorDocument 401 /Subscription/how_to_subscribe.html </code></blockquote> ! <P>The syntax is, <P><code><A HREF="mod/core.html#errordocument">ErrorDocument</A></code> ! <3-digit-code> action <P>where the action can be, <OL> <LI>Text to be displayed. Prefix the text with a quote ("). Whatever ! follows the quote is displayed. <em>Note: the (") prefix isn't displayed.</em> <LI>An external URL to redirect to. 1.6 +1 -1 apache/htdocs/manual/dns-caveats.html Index: dns-caveats.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/dns-caveats.html,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** dns-caveats.html 1997/06/04 11:07:48 1.5 --- dns-caveats.html 1997/07/06 17:18:53 1.6 *************** *** 188,194 **** than not booting at all depending on what the webserver is supposed to accomplish. ! <p>As HTTP/1.1 is deployed and browsers and proxies start issuing the <code>Host</code> header it will become possible to avoid the use of IP-based virtual hosts entirely. In this event a webserver has no requirement to do DNS lookups during configuration. But as of March 1997 these --- 188,194 ---- than not booting at all depending on what the webserver is supposed to accomplish. ! <p>As HTTP/1.1 is deployed and browsers and proxies start issuing the <code>Host</code> header it will become possible to avoid the use of IP-based virtual hosts entirely. In this event a webserver has no requirement to do DNS lookups during configuration. But as of March 1997 these 1.5 +3 -3 apache/htdocs/manual/env.html Index: env.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/env.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** env.html 1997/06/04 11:07:48 1.4 --- env.html 1997/07/06 17:18:53 1.5 *************** *** 17,25 **** <P>Interoperability problems have led to the introduction of mechanisms to modify the way Apache behaves when talking to particular clients. To make these mechanisms as flexible as possible, they ! are invoked by defining environment variables, typically with ! <A HREF="mod/mod_browser.html#browsermatch">BrowserMatch</A>, though ! <A HREF="mod/mod_env.html#setenv">SetEnv</A> and <A HREF="mod/mod_env.html#passenv">PassEnv</A> could also be used, for example.</P> --- 17,25 ---- <P>Interoperability problems have led to the introduction of mechanisms to modify the way Apache behaves when talking to particular clients. To make these mechanisms as flexible as possible, they ! are invoked by defining environment variables, typically with ! <A HREF="mod/mod_browser.html#browsermatch">BrowserMatch</A>, though ! <A HREF="mod/mod_env.html#setenv">SetEnv</A> and <A HREF="mod/mod_env.html#passenv">PassEnv</A> could also be used, for example.</P> 1.10 +1 -2 apache/htdocs/manual/host.html Index: host.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/host.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** host.html 1997/06/04 11:07:48 1.9 --- host.html 1997/07/06 17:18:54 1.10 *************** *** 165,173 **** be directly taken to the Apache pages. Older browsers will be able to click on the link from the main server, go to <code>http://www.apache.org/apache/</code>, and then access the ! pages.</p> <!--#include virtual="footer.html" --> </BODY> </HTML> - --- 165,172 ---- be directly taken to the Apache pages. Older browsers will be able to click on the link from the main server, go to <code>http://www.apache.org/apache/</code>, and then access the ! pages.</p> <!--#include virtual="footer.html" --> </BODY> </HTML> 1.11 +4 -4 apache/htdocs/manual/install.html Index: install.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/install.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** install.html 1997/06/30 21:42:25 1.10 --- install.html 1997/07/06 17:18:54 1.11 *************** *** 28,34 **** web server at <A HREF="http://www.apache.org/">http://www.apache.org/</A>. This will list the current release, any more recent beta-test release, together ! with details of mirror web and anonymous ftp sites. <P> --- 28,34 ---- web server at <A HREF="http://www.apache.org/">http://www.apache.org/</A>. This will list the current release, any more recent beta-test release, together ! with details of mirror web and anonymous ftp sites. <P> *************** *** 153,159 **** In addition to these three files, the server behavior can be configured on a directory-by-directory basis by using <CODE>.htaccess</CODE> ! files in directories accessed by the server. <H3>Starting and Stopping the Server</H3> --- 153,159 ---- In addition to these three files, the server behavior can be configured on a directory-by-directory basis by using <CODE>.htaccess</CODE> ! files in directories accessed by the server. <H3>Starting and Stopping the Server</H3> *************** *** 170,176 **** If all goes well this will return to the command prompt almost immediately. This indicates that the server is now up and running. If anything goes wrong during the initialization of the server you will ! see an error message on the screen. If the server started ok, you can now use your browser to connect to the server and read the documentation. If you are running --- 170,176 ---- If all goes well this will return to the command prompt almost immediately. This indicates that the server is now up and running. If anything goes wrong during the initialization of the server you will ! see an error message on the screen. If the server started ok, you can now use your browser to connect to the server and read the documentation. If you are running *************** *** 187,193 **** <i>child</i> processes to handle the requests. If you started Apache as the root user, the parent process will continue to run as root while the children will change to the user as given in the httpd.conf ! file. <P> --- 187,193 ---- <i>child</i> processes to handle the requests. If you started Apache as the root user, the parent process will continue to run as root while the children will change to the user as given in the httpd.conf ! file. <P> 1.12 +3 -3 apache/htdocs/manual/invoking.html Index: invoking.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/invoking.html,v retrieving revision 1.11 retrieving revision 1.12 diff -C3 -r1.11 -r1.12 *** invoking.html 1997/06/04 11:07:49 1.11 --- invoking.html 1997/07/06 17:18:54 1.12 *************** *** 18,27 **** <h2>Invoking Apache</h2> The <code>httpd</code> program is usually run as a daemon which executes continuously, handling requests. It is possible to invoke Apache by ! the Internet daemon <code>inetd</code> each time a connection to the HTTP ! service is made (use the <A HREF="mod/core.html#servertype">ServerType</A> directive) ! but this is not recommended. <h2>Command line options</h2> The following options are recognized on the httpd command line: --- 18,27 ---- <h2>Invoking Apache</h2> The <code>httpd</code> program is usually run as a daemon which executes continuously, handling requests. It is possible to invoke Apache by ! the Internet daemon <code>inetd</code> each time a connection to the HTTP ! service is made (use the <A HREF="mod/core.html#servertype">ServerType</A> directive) ! but this is not recommended. <h2>Command line options</h2> The following options are recognized on the httpd command line: 1.8 +1 -3 apache/htdocs/manual/man-template.html Index: man-template.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/man-template.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** man-template.html 1997/07/06 14:54:44 1.7 --- man-template.html 1997/07/06 17:18:54 1.8 *************** *** 41,48 **** <BLOCKQUOTE><EM>Add these directives to the list in directives.html</EM></BLOCKQUOTE> ! <HR> ! <H2><A NAME="adirective">ADirective directive</A></H2> <P> <STRONG>Syntax:</STRONG> ADirective <EM>some args</EM> --- 41,47 ---- <BLOCKQUOTE><EM>Add these directives to the list in directives.html</EM></BLOCKQUOTE> ! <HR> <!-- the HR is part of the directive description --> <H2><A NAME="adirective">ADirective directive</A></H2> <P> <STRONG>Syntax:</STRONG> ADirective <EM>some args</EM> *************** *** 74,80 **** <P> The ADirective directive does something. </P> - <HR> <!--#include virtual="footer.html" --> </BODY> --- 73,78 ---- 1.6 +2 -2 apache/htdocs/manual/multilogs.html Index: multilogs.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/multilogs.html,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** multilogs.html 1997/06/04 11:07:50 1.5 --- multilogs.html 1997/07/06 17:18:55 1.6 *************** *** 44,50 **** <p> The new <code>CustomLog</code> directive takes both a filename to log ! to, and a log file format. <hr> --- 44,50 ---- <p> The new <code>CustomLog</code> directive takes both a filename to log ! to, and a log file format. <hr> *************** *** 104,110 **** </VirtualHost> </pre> ! Since no TransferLog or CustomLog directives appear inside the <VirtualHost> section, any requests for this virtual host will be logged in the main server's log files. If however the directive --- 104,110 ---- </VirtualHost> </pre> ! Since no TransferLog or CustomLog directives appear inside the <VirtualHost> section, any requests for this virtual host will be logged in the main server's log files. If however the directive 1.7 +1 -1 apache/htdocs/manual/new_features_1_0.html Index: new_features_1_0.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_0.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** new_features_1_0.html 1997/06/04 11:07:50 1.6 --- new_features_1_0.html 1997/07/06 17:18:55 1.7 *************** *** 54,60 **** "spare" - every couple of seconds the parent checks the actual number of spare servers and adjusts accordingly. This should keep the number of servers concurrently running relatively low while still ensuring ! minimal forking. <P> --- 54,60 ---- "spare" - every couple of seconds the parent checks the actual number of spare servers and adjusts accordingly. This should keep the number of servers concurrently running relatively low while still ensuring ! minimal forking. <P> 1.32 +7 -6 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.31 retrieving revision 1.32 diff -C3 -r1.31 -r1.32 *** new_features_1_2.html 1997/07/06 14:54:44 1.31 --- new_features_1_2.html 1997/07/06 17:18:56 1.32 *************** *** 45,51 **** <ul> ! <li><b><a href="http11.html">HTTP/1.1 Compliance</a></b> [Documentation to be written]<br> Aside from the optional proxy module (which operates as HTTP/1.0), Apache is conditionally compliant with the HTTP/1.1 proposed standard, --- 45,52 ---- <ul> ! <!-- change the "name" to an "href" if/when there's such a document --> ! <li><b><a name="http11.html">HTTP/1.1 Compliance</a></b> [Documentation to be written]<br> Aside from the optional proxy module (which operates as HTTP/1.0), Apache is conditionally compliant with the HTTP/1.1 proposed standard, *************** *** 66,72 **** <li><b><a href="mod/core.html#files">File-based and Regex-enabled Directive Sections</a></b><br> ! The new <a href="mod/core.html#files"><code><Files></code></a> section allows directives to be enabled based on full filename, not just directory and URL. In addition, <code><Files></code> sections can appear in --- 67,73 ---- <li><b><a href="mod/core.html#files">File-based and Regex-enabled Directive Sections</a></b><br> ! The new <a href="mod/core.html#files"><code><Files></code></a> section allows directives to be enabled based on full filename, not just directory and URL. In addition, <code><Files></code> sections can appear in *************** *** 74,80 **** <a href="mod/core.html#directory"><code><Directory></code></a> and <a href="mod/core.html#location"><code><Location></code></a>, can also now be based on regular expressions, not just simple prefix ! matching. <li><b><a href="mod/mod_browser.html">Browser-based Environment Variables</a></b><br> --- 75,81 ---- <a href="mod/core.html#directory"><code><Directory></code></a> and <a href="mod/core.html#location"><code><Location></code></a>, can also now be based on regular expressions, not just simple prefix ! matching. <li><b><a href="mod/mod_browser.html">Browser-based Environment Variables</a></b><br> *************** *** 99,105 **** The optional <code>mod_log_config</code> included with earlier versions of Apache is now standard, and has been enhanced to allow logging of much more detail about the transaction, and can be used to ! open <a href="multilogs.html">more than one log file</a> at once (each of which can have a different log format). If you have Apache write any logs to a directory which is writable by anyone other than the user that starts the server, see the <A HREF="misc/security_tips.html"> --- 100,106 ---- The optional <code>mod_log_config</code> included with earlier versions of Apache is now standard, and has been enhanced to allow logging of much more detail about the transaction, and can be used to ! open <a href="multilogs.html">more than one log file</a> at once (each of which can have a different log format). If you have Apache write any logs to a directory which is writable by anyone other than the user that starts the server, see the <A HREF="misc/security_tips.html"> *************** *** 138,144 **** <li><b><a href="mod/mod_alias.html">Redirect Directive Can Return Alternate Status</a></b><br> The Redirect directive can return permanent or temporary redirects, ! "Gone" or "See Other" HTTP status. For NCSA-compatibility, RedirectTemp and RedirectPermanent are also implemented. <li><b><a href="install.html">Simplified Compilation</a></b><br> --- 139,145 ---- <li><b><a href="mod/mod_alias.html">Redirect Directive Can Return Alternate Status</a></b><br> The Redirect directive can return permanent or temporary redirects, ! "Gone" or "See Other" HTTP status. For NCSA-compatibility, RedirectTemp and RedirectPermanent are also implemented. <li><b><a href="install.html">Simplified Compilation</a></b><br> *************** *** 171,177 **** now have a syntax compatible with the NCSA server. <li><b><a href="mod/core.html#satisfy">NCSA Satisfy authentication ! directive now implemented</a></b><br> <code>Satisfy</code> allows for more flexible access control configurations. --- 172,178 ---- now have a syntax compatible with the NCSA server. <li><b><a href="mod/core.html#satisfy">NCSA Satisfy authentication ! directive now implemented</a></b><br> <code>Satisfy</code> allows for more flexible access control configurations. 1.3 +25 -4 apache/htdocs/manual/new_features_1_3.html Index: new_features_1_3.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_3.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** new_features_1_3.html 1997/07/06 14:54:45 1.2 --- new_features_1_3.html 1997/07/06 17:18:56 1.3 *************** *** 19,44 **** functionality. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that recent Apache versions are ! pickier about - please check the <a href="misc/compat_notes.html">compatibility notes</a> if you have any problems.</p> <hr> <p>In addition to a number of bug fixes and internal performance enhancements, <a href="http://www.apache.org/dist/">Apache ! 1.2</a> has the following specific new user features:</p> <ul> <li><b><a href="nt.html">Support for Windows NT/95</a></b> ! [Documentation to be written]<br> ! Apache now supports the Windows NT and Windows 95 operating systems, as well as the Unix systems supported in previos releases. Although the Windows version of Apache may not be perform as well as on the Unix systems for which Apache was originally written, the ability to run on Windows gives Apache the ability to run on a large number of web servers it was not previously able to. </ul> --- 19,65 ---- functionality. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that recent Apache versions are ! pickier about - please check the <a href="misc/compat_notes.html">compatibility notes</a> if you have any problems.</p> <hr> <p>In addition to a number of bug fixes and internal performance enhancements, <a href="http://www.apache.org/dist/">Apache ! 1.3</a> has the following specific new user features:</p> <ul> <li><b><a href="nt.html">Support for Windows NT/95</a></b> ! [Documentation to be written] ! <P> Apache now supports the Windows NT and Windows 95 operating systems, as well as the Unix systems supported in previos releases. Although the Windows version of Apache may not be perform as well as on the Unix systems for which Apache was originally written, the ability to run on Windows gives Apache the ability to run on a large number of web servers it was not previously able to. + </P> + </LI><STRONG>Support for Directory Icon Sizing</STRONG> + <P> + The + <A + HREF="mod/mod_dir.html" + ><SAMP>mod_dir</SAMP></A> + module provides listings of directory contents when appropriate. If + the <SAMP>FancyIndexing</SAMP> option is enabled, each file in the + list is preceded by an icon representing the content type. In earlier + versions of Apache, the HTML <SAMP>IMG</SAMP> tags for these icons + weren't sized, so the browser had to wait until the images were loaded + before it could lay out the page. With 1.3, the + <A + HREF="mod/mod_dir.html#indexoptions" + ><SAMP>IndexOptions</SAMP></A> + directive has two new keywords which allow you to control whether + pre-sized <SAMP>IMG</SAMP> tags are used. This can substantially + speed up the display of large directory listings. + </P> + </LI> </ul> 1.10 +1 -1 apache/htdocs/manual/process-model.html Index: process-model.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/process-model.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** process-model.html 1997/06/24 18:39:31 1.9 --- process-model.html 1997/07/06 17:18:56 1.10 *************** *** 24,30 **** "spare" - every couple of seconds the parent checks the actual number of spare servers and adjusts accordingly. This should keep the number of servers concurrently running relatively low while still ensuring ! minimal forking. <P> --- 24,30 ---- "spare" - every couple of seconds the parent checks the actual number of spare servers and adjusts accordingly. This should keep the number of servers concurrently running relatively low while still ensuring ! minimal forking. <P> 1.13 +18 -18 apache/htdocs/manual/suexec.html Index: suexec.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/suexec.html,v retrieving revision 1.12 retrieving revision 1.13 diff -C3 -r1.12 -r1.13 *** suexec.html 1997/06/24 18:39:31 1.12 --- suexec.html 1997/07/06 17:18:56 1.13 *************** *** 25,31 **** <LI><A HREF="#enable">Enabling & Disabling suEXEC</A></LI> <LI><A HREF="#debug">Debugging suEXEC</A></LI> <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings & ! Examples</A></LI> </OL> </P> --- 25,31 ---- <LI><A HREF="#enable">Enabling & Disabling suEXEC</A></LI> <LI><A HREF="#debug">Debugging suEXEC</A></LI> <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings & ! Examples</A></LI> </OL> </P> *************** *** 43,51 **** with allowing users to develop and run private CGI or SSI programs. However, if suEXEC is improperly configured, it can cause any number of problems and possibly create new holes in your computer's security. If you aren't familiar ! with managing setuid root programs and the security issues they present, we highly recommend that you not consider using suEXEC. ! </P> <P ALIGN="CENTER"> <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG> --- 43,51 ---- with allowing users to develop and run private CGI or SSI programs. However, if suEXEC is improperly configured, it can cause any number of problems and possibly create new holes in your computer's security. If you aren't familiar ! with managing setuid root programs and the security issues they present, we highly recommend that you not consider using suEXEC. ! </P> <P ALIGN="CENTER"> <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG> *************** *** 65,71 **** </P> <P ALIGN="LEFT"> ! Second, it is assumed you are familiar with some basic concepts of your computer's security and its administration. This involves an understanding of <STRONG>setuid/setgid</STRONG> operations and the various effects they may have on your system and its level of security. --- 65,71 ---- </P> <P ALIGN="LEFT"> ! Second, it is assumed you are familiar with some basic concepts of your computer's security and its administration. This involves an understanding of <STRONG>setuid/setgid</STRONG> operations and the various effects they may have on your system and its level of security. *************** *** 76,89 **** version of suEXEC code. All code for suEXEC has been carefully scrutinized and tested by the developers as well as numerous beta testers. Every precaution has been taken to ensure a simple yet solidly safe base of code. Altering this ! code can cause unexpected problems and new security risks. It is ! <STRONG>highly</STRONG> recommended you not alter the suEXEC code unless you are well versed in the particulars of security programming and are willing to share your work with the Apache Group for consideration. </P> <P ALIGN="LEFT"> ! Fourth, and last, it has been the decision of the Apache Group to <STRONG>NOT</STRONG> make suEXEC part of the default installation of Apache. To this end, suEXEC configuration is a manual process requiring of the administrator careful attention to details. It is through this process --- 76,89 ---- version of suEXEC code. All code for suEXEC has been carefully scrutinized and tested by the developers as well as numerous beta testers. Every precaution has been taken to ensure a simple yet solidly safe base of code. Altering this ! code can cause unexpected problems and new security risks. It is ! <STRONG>highly</STRONG> recommended you not alter the suEXEC code unless you are well versed in the particulars of security programming and are willing to share your work with the Apache Group for consideration. </P> <P ALIGN="LEFT"> ! Fourth, and last, it has been the decision of the Apache Group to <STRONG>NOT</STRONG> make suEXEC part of the default installation of Apache. To this end, suEXEC configuration is a manual process requiring of the administrator careful attention to details. It is through this process *************** *** 112,118 **** called by the main Apache web server. This wrapper is called when an HTTP request is made for a CGI or SSI program that the administrator has designated to run as a userid other than that of the main server. When such a request ! is made, Apache provides the suEXEC wrapper with the program's name and the user and group IDs under which the program is to execute. </P> --- 112,118 ---- called by the main Apache web server. This wrapper is called when an HTTP request is made for a CGI or SSI program that the administrator has designated to run as a userid other than that of the main server. When such a request ! is made, Apache provides the suEXEC wrapper with the program's name and the user and group IDs under which the program is to execute. </P> *************** *** 299,313 **** #define GID_MIN 100 /* ! * USERDIR_SUFFIX -- Define to be the subdirectory under users' * home directories where suEXEC access should * be allowed. All executables under this directory ! * will be executable by suEXEC as the user so ! * they should be "safe" programs. If you are ! * using a "simple" UserDir directive (ie. one ! * without a "*" in it) this should be set to * the same value. suEXEC will not work properly ! * in cases where the UserDir directive points to * a location that is not the same as the user's * home directory as referenced in the passwd file. * --- 299,313 ---- #define GID_MIN 100 /* ! * USERDIR_SUFFIX -- Define to be the subdirectory under users' * home directories where suEXEC access should * be allowed. All executables under this directory ! * will be executable by suEXEC as the user so ! * they should be "safe" programs. If you are ! * using a "simple" UserDir directive (ie. one ! * without a "*" in it) this should be set to * the same value. suEXEC will not work properly ! * in cases where the UserDir directive points to * a location that is not the same as the user's * home directory as referenced in the passwd file. * *************** *** 345,351 **** <P ALIGN="LEFT"> <STRONG>COMPILING THE SUEXEC WRAPPER</STRONG><BR> ! You now need to compile the suEXEC wrapper. At the shell command prompt, type: <STRONG><CODE>cc suexec.c -o suexec [ENTER]</CODE></STRONG>. This should create the <STRONG><em>suexec</em></STRONG> wrapper executable. </P> --- 345,351 ---- <P ALIGN="LEFT"> <STRONG>COMPILING THE SUEXEC WRAPPER</STRONG><BR> ! You now need to compile the suEXEC wrapper. At the shell command prompt, type: <STRONG><CODE>cc suexec.c -o suexec [ENTER]</CODE></STRONG>. This should create the <STRONG><em>suexec</em></STRONG> wrapper executable. </P> *************** *** 382,389 **** </P> <P ALIGN="LEFT"> ! In order for the wrapper to set the user ID, it must me installed as owner ! <STRONG><em>root</em></STRONG> and must have the setuserid execution bit set for file modes. If you are not running a <STRONG><em>root</em></STRONG> user shell, do so now and execute the following commands. </P> --- 382,389 ---- </P> <P ALIGN="LEFT"> ! In order for the wrapper to set the user ID, it must me installed as owner ! <STRONG><em>root</em></STRONG> and must have the setuserid execution bit set for file modes. If you are not running a <STRONG><em>root</em></STRONG> user shell, do so now and execute the following commands. </P> *************** *** 447,453 **** <P ALIGN="LEFT"> The suEXEC wrapper will write log information to the location defined in the <code>suexec.h</code> as indicated above. If you feel you have ! configured and installed the wrapper properly, have a look at this log and the error_log for the server to see where you may have gone astray. </P> --- 447,453 ---- <P ALIGN="LEFT"> The suEXEC wrapper will write log information to the location defined in the <code>suexec.h</code> as indicated above. If you feel you have ! configured and installed the wrapper properly, have a look at this log and the error_log for the server to see where you may have gone astray. </P> 1.12 +3 -3 apache/htdocs/manual/vhosts-in-depth.html Index: vhosts-in-depth.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/vhosts-in-depth.html,v retrieving revision 1.11 retrieving revision 1.12 diff -C3 -r1.11 -r1.12 *** vhosts-in-depth.html 1997/07/06 14:54:45 1.11 --- vhosts-in-depth.html 1997/07/06 17:18:57 1.12 *************** *** 143,149 **** the final setting of that value is in the main_server.) <li>The "lookup defaults" that define the default directory ! permissions for a vhost are merged with those of the main server. This includes any per-directory configuration information for any module. --- 143,149 ---- the final setting of that value is in the main_server.) <li>The "lookup defaults" that define the default directory ! permissions for a vhost are merged with those of the main server. This includes any per-directory configuration information for any module. *************** *** 218,224 **** the connection vhost. If it does then the hostname portion of the URI is saved as the <EM>request_hostname</EM>. If it does not match, then the URI remains untouched. <STRONG>Note</STRONG>: to achieve this address ! comparison, the hostname supplied goes through a DNS lookup unless it matches the <code>ServerName</code> or the local IP address of the client's socket. --- 218,224 ---- the connection vhost. If it does then the hostname portion of the URI is saved as the <EM>request_hostname</EM>. If it does not match, then the URI remains untouched. <STRONG>Note</STRONG>: to achieve this address ! comparison, the hostname supplied goes through a DNS lookup unless it matches the <code>ServerName</code> or the local IP address of the client's socket. *************** *** 301,307 **** If you do have a <SAMP>_default_</SAMP> vhost, then you cannot place named-based vhosts after it in the config. This is because on any connection to the main server IPs the connection vhost will always be ! the <SAMP>_default_</SAMP> vhost since none of the name-based are considered during <code>find_virtual_server</code>. </p> --- 301,307 ---- If you do have a <SAMP>_default_</SAMP> vhost, then you cannot place named-based vhosts after it in the config. This is because on any connection to the main server IPs the connection vhost will always be ! the <SAMP>_default_</SAMP> vhost since none of the name-based are considered during <code>find_virtual_server</code>. </p> 1.14 +4 -4 apache/htdocs/manual/virtual-host.html Index: virtual-host.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/virtual-host.html,v retrieving revision 1.13 retrieving revision 1.14 diff -C3 -r1.13 -r1.14 *** virtual-host.html 1997/06/24 18:39:32 1.13 --- virtual-host.html 1997/07/06 17:18:57 1.14 *************** *** 66,72 **** <ul> <li>The different virtual hosts need very different httpd configurations, such as different values for: <A HREF="mod/core.html#servertype">ServerType</A>, ! <A HREF="mod/core.html#user">User</A>, <A HREF="mod/core.html#group">Group</A>, <A HREF="mod/mod_mime.html#typesconfig">TypesConfig</A> or <A HREF="mod/core.html#serverroot">ServerRoot</A>. --- 66,72 ---- <ul> <li>The different virtual hosts need very different httpd configurations, such as different values for: <A HREF="mod/core.html#servertype">ServerType</A>, ! <A HREF="mod/core.html#user">User</A>, <A HREF="mod/core.html#group">Group</A>, <A HREF="mod/mod_mime.html#typesconfig">TypesConfig</A> or <A HREF="mod/core.html#serverroot">ServerRoot</A>. *************** *** 154,160 **** may be used by a process; the limit is typically 64, and may usually be increased up to a large hard-limit. <p> ! Although Apache attempts to increase the limit as required, this may not work if: <ol> <li>Your system does not provide the setrlimit() system call. --- 154,160 ---- may be used by a process; the limit is typically 64, and may usually be increased up to a large hard-limit. <p> ! Although Apache attempts to increase the limit as required, this may not work if: <ol> <li>Your system does not provide the setrlimit() system call. *************** *** 181,189 **** for the root process. This will exhibit itself as errors in the error log like "unable to fork". There are two ways you can bump this up: ! <OL> <LI>Have a <code>csh</code> script wrapper around httpd which sets the ! "rlimit" to some large number, like 512. <LI>Edit http_main.c to add calls to setrlimit() from main(), along the lines of <PRE> struct rlimit rlp; --- 181,189 ---- for the root process. This will exhibit itself as errors in the error log like "unable to fork". There are two ways you can bump this up: ! <OL> <LI>Have a <code>csh</code> script wrapper around httpd which sets the ! "rlimit" to some large number, like 512. <LI>Edit http_main.c to add calls to setrlimit() from main(), along the lines of <PRE> struct rlimit rlp; 1.10 +23 -23 apache/htdocs/manual/misc/API.html Index: API.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/API.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** API.html 1997/07/06 14:54:47 1.9 --- API.html 1997/07/06 17:19:04 1.10 *************** *** 59,65 **** <h2><a name="basics">Basic concepts.</a></h2> ! We begin with an overview of the basic concepts behind the API, and how they are manifested in the code. <h3><a name="HMR">Handlers, Modules, and Requests</a></h3> --- 59,65 ---- <h2><a name="basics">Basic concepts.</a></h2> ! We begin with an overview of the basic concepts behind the API, and how they are manifested in the code. <h3><a name="HMR">Handlers, Modules, and Requests</a></h3> *************** *** 78,84 **** <li> `Fixups' --- there aren't any of these yet, but the phase is intended as a hook for possible extensions like <code>SetEnv</code>, which don't really fit well elsewhere. ! <li> Actually sending a response back to the client. <li> Logging the request </ul> --- 78,84 ---- <li> `Fixups' --- there aren't any of these yet, but the phase is intended as a hook for possible extensions like <code>SetEnv</code>, which don't really fit well elsewhere. ! <li> Actually sending a response back to the client. <li> Logging the request </ul> *************** *** 89,95 **** <ul> <li> <em>Handle</em> the request, and indicate that it has done so ! by returning the magic constant <code>OK</code>. <li> <em>Decline</em> to handle the request, by returning the magic integer constant <code>DECLINED</code>. In this case, the server behaves in all respects as if the handler simply hadn't --- 89,95 ---- <ul> <li> <em>Handle</em> the request, and indicate that it has done so ! by returning the magic constant <code>OK</code>. <li> <em>Decline</em> to handle the request, by returning the magic integer constant <code>DECLINED</code>. In this case, the server behaves in all respects as if the handler simply hadn't *************** *** 160,166 **** (such as <code>ScriptAlias</code>). With no further ado, the module itself: ! <pre> /* Declarations of handlers. */ --- 160,166 ---- (such as <code>ScriptAlias</code>). With no further ado, the module itself: ! <pre> /* Declarations of handlers. */ *************** *** 273,289 **** server_rec *server; /* What object is being requested */ ! char *uri; char *filename; char *path_info; char *args; /* QUERY_ARGS, if any */ struct stat finfo; /* Set by server core; * st_mode set to zero if no such file */ ! char *content_type; char *content_encoding; ! /* MIME header environments, in and out. Also, an array containing * environment variables to be passed to subprocesses, so people can * write modules to add to that environment. --- 273,289 ---- server_rec *server; /* What object is being requested */ ! char *uri; char *filename; char *path_info; char *args; /* QUERY_ARGS, if any */ struct stat finfo; /* Set by server core; * st_mode set to zero if no such file */ ! char *content_type; char *content_encoding; ! /* MIME header environments, in and out. Also, an array containing * environment variables to be passed to subprocesses, so people can * write modules to add to that environment. *************** *** 293,306 **** * redirects (so the headers printed for ErrorDocument handlers will * have them). */ ! table *headers_in; table *headers_out; table *err_headers_out; table *subprocess_env; /* Info about the request itself... */ ! int header_only; /* HEAD request, as opposed to GET */ char *protocol; /* Protocol, as given to us, or HTTP/0.9 */ char *method; /* GET, HEAD, POST, etc. */ --- 293,306 ---- * redirects (so the headers printed for ErrorDocument handlers will * have them). */ ! table *headers_in; table *headers_out; table *err_headers_out; table *subprocess_env; /* Info about the request itself... */ ! int header_only; /* HEAD request, as opposed to GET */ char *protocol; /* Protocol, as given to us, or HTTP/0.9 */ char *method; /* GET, HEAD, POST, etc. */ *************** *** 321,330 **** * These are config vectors, with one void* pointer for each module * (the thing pointed to being the module's business). */ ! void *per_dir_config; /* Options set in config files, etc. */ void *request_config; /* Notes on *this* request */ ! }; </pre> --- 321,330 ---- * These are config vectors, with one void* pointer for each module * (the thing pointed to being the module's business). */ ! void *per_dir_config; /* Options set in config files, etc. */ void *request_config; /* Notes on *this* request */ ! }; </pre> *************** *** 426,439 **** { int errstatus; FILE *f; ! if (r->method_number != M_GET) return DECLINED; if (r->finfo.st_mode == 0) return NOT_FOUND; if ((errstatus = set_content_length (r, r->finfo.st_size)) || (errstatus = set_last_modified (r, r->finfo.st_mtime))) return errstatus; ! f = fopen (r->filename, "r"); if (f == NULL) { --- 426,439 ---- { int errstatus; FILE *f; ! if (r->method_number != M_GET) return DECLINED; if (r->finfo.st_mode == 0) return NOT_FOUND; if ((errstatus = set_content_length (r, r->finfo.st_size)) || (errstatus = set_last_modified (r, r->finfo.st_mtime))) return errstatus; ! f = fopen (r->filename, "r"); if (f == NULL) { *************** *** 441,447 **** r->filename, r); return FORBIDDEN; } ! register_timeout ("send", r); send_http_header (r); --- 441,447 ---- r->filename, r); return FORBIDDEN; } ! register_timeout ("send", r); send_http_header (r); *************** *** 491,497 **** handlers in such cases is the one which was originally built for the initial request from the client; note that the bytes_sent field will only be correct in the last request in the chain (the one for which a ! response was actually sent). <h2><a name="pools">Resource allocation and resource pools</a></h2> --- 491,497 ---- handlers in such cases is the one which was originally built for the initial request from the client; note that the bytes_sent field will only be correct in the last request in the chain (the one for which a ! response was actually sent). <h2><a name="pools">Resource allocation and resource pools</a></h2> *************** *** 641,647 **** <h3>Other sorts of resources --- cleanup functions</h3> More text goes here. Describe the the cleanup primitives in terms of ! which the file stuff is implemented; also, <code>spawn_process</code>. <h3>Fine control --- creating and dealing with sub-pools, with a note on sub-requests</h3> --- 641,647 ---- <h3>Other sorts of resources --- cleanup functions</h3> More text goes here. Describe the the cleanup primitives in terms of ! which the file stuff is implemented; also, <code>spawn_process</code>. <h3>Fine control --- creating and dealing with sub-pools, with a note on sub-requests</h3> *************** *** 783,789 **** new->forced_types = make_table (p, 4); new->encoding_types = make_table (p, 4); ! return new; } </pre> --- 783,789 ---- new->forced_types = make_table (p, 4); new->encoding_types = make_table (p, 4); ! return new; } </pre> *************** *** 876,884 **** <pre> command_rec mime_cmds[] = { ! { "AddType", add_type, NULL, OR_FILEINFO, TAKE2, "a mime type followed by a file extension" }, ! { "AddEncoding", add_encoding, NULL, OR_FILEINFO, TAKE2, "an encoding (e.g., gzip), followed by a file extension" }, { NULL } }; --- 876,884 ---- <pre> command_rec mime_cmds[] = { ! { "AddType", add_type, NULL, OR_FILEINFO, TAKE2, "a mime type followed by a file extension" }, ! { "AddEncoding", add_encoding, NULL, OR_FILEINFO, TAKE2, "an encoding (e.g., gzip), followed by a file extension" }, { NULL } }; *************** *** 919,925 **** should be present. If the arguments in the actual config file are not as required, this string will be used to help give a more specific error message. (You can safely leave this ! <code>NULL</code>). </ul> Finally, having set this all up, we have to use it. This is --- 919,925 ---- should be present. If the arguments in the actual config file are not as required, this string will be used to help give a more specific error message. (You can safely leave this ! <code>NULL</code>). </ul> Finally, having set this all up, we have to use it. This is *************** *** 942,948 **** r->content_type = DIR_MAGIC_TYPE; return OK; } ! if((i=rind(fn,'.')) < 0) return DECLINED; ++i; --- 942,948 ---- r->content_type = DIR_MAGIC_TYPE; return OK; } ! if((i=rind(fn,'.')) < 0) return DECLINED; ++i; *************** *** 961,967 **** { r->content_type = type; } ! return OK; } --- 961,967 ---- { r->content_type = type; } ! return OK; } *************** *** 995,1001 **** alias_entry *new = push_array (conf->redirects); if (!is_url (url)) return "Redirect to non-URL"; ! new->fake = f; new->real = url; return NULL; } --- 995,1001 ---- alias_entry *new = push_array (conf->redirects); if (!is_url (url)) return "Redirect to non-URL"; ! new->fake = f; new->real = url; return NULL; } 1.82 +60 -60 apache/htdocs/manual/misc/FAQ.html Index: FAQ.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/FAQ.html,v retrieving revision 1.81 retrieving revision 1.82 diff -C3 -r1.81 -r1.82 *** FAQ.html 1997/07/06 14:54:47 1.81 --- FAQ.html 1997/07/06 17:19:04 1.82 *************** *** 15,21 **** <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1> <P> ! $Revision: 1.81 $ ($Date: 1997/07/06 14:54:47 $) </P> <P> The latest version of this FAQ is always available from the main --- 15,21 ---- <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1> <P> ! $Revision: 1.82 $ ($Date: 1997/07/06 17:19:04 $) </P> <P> The latest version of this FAQ is always available from the main *************** *** 85,91 **** <LI><A HREF="#why">Why was Apache created?</A> </LI> <LI><A HREF="#relate">How does The Apache Group's work relate to ! other servers?</A> </LI> <LI><A HREF="#name">Why the name "Apache"?</A> </LI> --- 85,91 ---- <LI><A HREF="#why">Why was Apache created?</A> </LI> <LI><A HREF="#relate">How does The Apache Group's work relate to ! other servers?</A> </LI> <LI><A HREF="#name">Why the name "Apache"?</A> </LI> *************** *** 116,122 **** </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="#ssi-part-i">How do I enable SSI (parsed HTML)?</A> </LI> --- 116,122 ---- </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="#ssi-part-i">How do I enable SSI (parsed HTML)?</A> </LI> *************** *** 147,153 **** </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 --- 147,153 ---- </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 *************** *** 191,197 **** <LI><A HREF="#addlog">How do I add browsers and referrers to my logs?</A> </LI> ! <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> --- 191,197 ---- <LI><A HREF="#addlog">How do I add browsers and referrers to my logs?</A> </LI> ! <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> *************** *** 257,263 **** <P> To address the concerns of a group of WWW providers and part-time httpd programmers that httpd didn't behave as they wanted it to behave. ! Apache is an entirely volunteer effort, completely funded by its members, not by commercial sales. </P> <HR> --- 257,263 ---- <P> To address the concerns of a group of WWW providers and part-time httpd programmers that httpd didn't behave as they wanted it to behave. ! Apache is an entirely volunteer effort, completely funded by its members, not by commercial sales. </P> <HR> *************** *** 291,297 **** For an independent assessment, see <A HREF="http://webcompare.iworld.com/compare/chart.html" ! >Web Compare</A>'s comparison chart. </P> <P> --- 291,297 ---- For an independent assessment, see <A HREF="http://webcompare.iworld.com/compare/chart.html" ! >Web Compare</A>'s comparison chart. </P> <P> *************** *** 417,426 **** <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/etc/httpd/logs/error_log</SAMP>, but see the <A HREF="../mod/core.html#errorlog" ><SAMP>ErrorLog</SAMP></A> --- 417,426 ---- <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/etc/httpd/logs/error_log</SAMP>, but see the <A HREF="../mod/core.html#errorlog" ><SAMP>ErrorLog</SAMP></A> *************** *** 510,516 **** 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. --- 510,516 ---- 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. *************** *** 577,583 **** <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 --- 577,583 ---- <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 *************** *** 594,600 **** <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: --- 594,600 ---- <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: *************** *** 615,621 **** </DL> </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 maximise performance, you should --- 615,621 ---- </DL> </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 maximise performance, you should *************** *** 625,631 **** </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> <HR> --- 625,631 ---- </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> <HR> *************** *** 637,643 **** 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> --- 637,643 ---- 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> *************** *** 764,770 **** HREF="../mod/mod_proxy.html" >proxy module</A>. If compiled ! in, this will make Apache act as a caching-proxy server. </P> <HR> </LI> --- 764,770 ---- HREF="../mod/mod_proxy.html" >proxy module</A>. If compiled ! in, this will make Apache act as a caching-proxy server. </P> <HR> </LI> *************** *** 774,780 **** <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" --- 774,780 ---- <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" *************** *** 793,815 **** 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/core.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 --- 793,815 ---- 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/core.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 *************** *** 828,844 **** <A HREF="../mod/core.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. </LI> --- 828,844 ---- <A HREF="../mod/core.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. </LI> *************** *** 877,883 **** </A> <P> On FreeBSD 2.2 and older <SAMP>FD_SETSIZE</SAMP>, which limits the ! number of open files on the system, is limited to 256. This can restrict the number of virtual hosts you can use; especially if they all use different log files. Increasing this limit (and recompiling Apache) is not enough, --- 877,883 ---- </A> <P> On FreeBSD 2.2 and older <SAMP>FD_SETSIZE</SAMP>, which limits the ! number of open files on the system, is limited to 256. This can restrict the number of virtual hosts you can use; especially if they all use different log files. Increasing this limit (and recompiling Apache) is not enough, *************** *** 972,978 **** <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> --- 972,978 ---- <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> *************** *** 1000,1006 **** </A> <P> Apache does <EM>not</EM> send automatically send a cookie on every ! response, unless you have re-compiled it with the <A HREF="../mod/mod_cookies.html" ><SAMP>mod_cookies</SAMP></A> --- 1000,1006 ---- </A> <P> Apache does <EM>not</EM> send automatically send a cookie on every ! response, unless you have re-compiled it with the <A HREF="../mod/mod_cookies.html" ><SAMP>mod_cookies</SAMP></A> *************** *** 1009,1019 **** This module may help track users, and uses cookies to do this. If you are not using the data generated by <SAMP>mod_cookies</SAMP>, do not compile it into Apache. Note that in 1.2 this module was renamed ! to the more correct name <A HREF="../mod/mod_usertrack.html" ><SAMP>mod_usertrack</SAMP></A>, ! and cookies have to be specifically enabled with the <A HREF="../mod/mod_usertrack.html#cookietracking" --- 1009,1019 ---- This module may help track users, and uses cookies to do this. If you are not using the data generated by <SAMP>mod_cookies</SAMP>, do not compile it into Apache. Note that in 1.2 this module was renamed ! to the more correct name <A HREF="../mod/mod_usertrack.html" ><SAMP>mod_usertrack</SAMP></A>, ! and cookies have to be specifically enabled with the <A HREF="../mod/mod_usertrack.html#cookietracking" *************** *** 1128,1134 **** <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> --- 1128,1134 ---- <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> *************** *** 1140,1146 **** <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 cancelled the connection before it had been --- 1140,1146 ---- <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 cancelled the connection before it had been *************** *** 1222,1228 **** <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> --- 1222,1228 ---- <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> *************** *** 1241,1249 **** 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> --- 1241,1249 ---- 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> *************** *** 1318,1325 **** 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> --- 1318,1325 ---- 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> *************** *** 1340,1346 **** <HR> </LI> <LI><A NAME="HPUX-core"> ! <STRONG>Why do I get core dumps under HPUX using HP's ANSI C compiler?</STRONG> </A> <P> --- 1340,1346 ---- <HR> </LI> <LI><A NAME="HPUX-core"> ! <STRONG>Why do I get core dumps under HPUX using HP's ANSI C compiler?</STRONG> </A> <P> *************** *** 1417,1423 **** 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 --- 1417,1423 ---- 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 *************** *** 1482,1507 **** <HR> </LI> <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.) --- 1482,1507 ---- <HR> </LI> <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.) *************** *** 1525,1559 **** <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="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. --- 1525,1559 ---- <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="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. *************** *** 1567,1573 **** <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>. --- 1567,1573 ---- <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>. *************** *** 1575,1581 **** <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> --- 1575,1581 ---- <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> *************** *** 1747,1753 **** 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> --- 1747,1753 ---- 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> 1.7 +1 -1 apache/htdocs/manual/misc/client_block_api.html Index: client_block_api.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/client_block_api.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** client_block_api.html 1997/06/04 11:42:56 1.6 --- client_block_api.html 1997/07/06 17:19:05 1.7 *************** *** 69,75 **** 100 response is defeated). Never call this function more than once. <li>Finally, call <code>get_client_block</code> in a loop. Pass it a ! buffer and its size. It will put data into the buffer (not necessarily the full buffer, in the case of chunked inputs), and return the length of the input block. When it is done reading, it will --- 69,75 ---- 100 response is defeated). Never call this function more than once. <li>Finally, call <code>get_client_block</code> in a loop. Pass it a ! buffer and its size. It will put data into the buffer (not necessarily the full buffer, in the case of chunked inputs), and return the length of the input block. When it is done reading, it will 1.10 +25 -11 apache/htdocs/manual/misc/compat_notes.html Index: compat_notes.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/compat_notes.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** compat_notes.html 1997/06/23 05:16:18 1.9 --- compat_notes.html 1997/07/06 17:19:05 1.10 *************** *** 30,36 **** <OL> ! <LI>The basic mod_auth <CODE>AuthGroupFile</CODE>-specified group file format allows commas between user names - Apache does not.<BR> <I>- added 12/1/96</I> </LI> --- 30,36 ---- <OL> ! <LI>The basic mod_auth <CODE>AuthGroupFile</CODE>-specified group file format allows commas between user names - Apache does not.<BR> <I>- added 12/1/96</I> </LI> *************** *** 51,57 **** <LI><CODE>AuthUserFile</CODE> requires a full pathname. In earlier versions of NCSA httpd and Apache, you could use a filename relative to the .htaccess file. This could be a major security hole, ! as it made it trivially easy to make a ".htpass" file in the a directory easily accessible by the world. We recommend you store your passwords outside your document tree. --- 51,57 ---- <LI><CODE>AuthUserFile</CODE> requires a full pathname. In earlier versions of NCSA httpd and Apache, you could use a filename relative to the .htaccess file. This could be a major security hole, ! as it made it trivially easy to make a ".htpass" file in the a directory easily accessible by the world. We recommend you store your passwords outside your document tree. *************** *** 78,95 **** <P> ! <LI>Icons for FancyIndexing broken - well, no, they're not broken, we've just upgraded the ! icons from flat .xbm files to pretty and much smaller .gif files, courtesy of <a href="mailto:[EMAIL PROTECTED]">Kevin Hughes</a> at ! <a href="http://www.eit.com">EIT</a>. ! If you are using the same srm.conf from an old distribution, make sure you add the new ! AddIcon, AddIconByType, and DefaultIcon commands. <P> ! <LI>Under IRIX, the "Group" directive in httpd.conf needs to be a valid group name ! (i.e. "nogroup") not the numeric group ID. The distribution httpd.conf, and earlier ! ones, had the default Group be "#-1", which was causing silent exits at startup.<p> <li><code>.asis</code> files: Apache 0.6.5 did not require a Status header; it added one automatically if the .asis file contained a Location header. --- 78,109 ---- <P> ! <LI>Icons for FancyIndexing broken - well, no, they're not broken, ! we've just upgraded the ! icons from flat .xbm files to pretty and much smaller .gif files, courtesy of <a href="mailto:[EMAIL PROTECTED]">Kevin Hughes</a> at ! <a href="http://www.eit.com/">EIT</a>. ! If you are using the same srm.conf from an old distribution, make sure ! you add the new ! <A ! HREF="../mod/mod_dir.html#addicon" ! >AddIcon</A>, ! <A ! HREF="../mod/mod_dir.html#addiconbytype" ! >AddIconByType</A>, ! and ! <A ! HREF="../mod/mod_dir.html#defaulticon" ! >DefaultIcon</A> ! directives. <P> ! <LI>Under IRIX, the "Group" directive in httpd.conf needs to be a ! valid group name ! (<EM>i.e.</EM>, "nogroup") not the numeric group ID. The distribution ! httpd.conf, and earlier ones, had the default Group be "#-1", which ! was causing silent exits at startup.<p> <li><code>.asis</code> files: Apache 0.6.5 did not require a Status header; it added one automatically if the .asis file contained a Location header. *************** *** 103,109 **** </LI> <LI>Apache does not permit commas delimiting the methods in <Limit>. ! </OL> More to come when we notice them.... --- 117,123 ---- </LI> <LI>Apache does not permit commas delimiting the methods in <Limit>. ! </OL> More to come when we notice them.... 1.4 +60 -60 apache/htdocs/manual/misc/descriptors.html Index: descriptors.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/descriptors.html,v retrieving revision 1.3 retrieving revision 1.4 diff -C3 -r1.3 -r1.4 *** descriptors.html 1997/07/02 18:07:17 1.3 --- descriptors.html 1997/07/06 17:19:05 1.4 *************** *** 15,21 **** <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Descriptors and Apache</H1> ! <p>A <i>descriptor</i>, also commonly called a <i>file handle</i> is an object that a program uses to read or write an open file, or open network socket, or a variety of other devices. It is represented by an integer, and you may be familiar with <code>stdin</code>, --- 15,21 ---- <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Descriptors and Apache</H1> ! <p>A <EM>descriptor</EM>, also commonly called a <EM>file handle</EM> is an object that a program uses to read or write an open file, or open network socket, or a variety of other devices. It is represented by an integer, and you may be familiar with <code>stdin</code>, *************** *** 32,43 **** that a program can have open at a time. There are typically three limits involved here. One is a kernel limitation, depending on your operating system you will either be able to tune the number of descriptors available ! to higher numbers (this is frequently called <i>FD_SETSIZE</i>). Or you may be stuck with a (relatively) low amount. The second limit is called ! the <i>hard resource</i> limit, and it is sometimes set by root in an obscure operating system file, but frequently is the same as the kernel ! limit. The third limit is called the <i>soft ! resource</i> limit. The soft limit is always less than or equal to the hard limit. For example, the hard limit may be 1024, but the soft limit only 64. Any user can raise their soft limit up to the hard limit. Root can raise the hard limit up to the system maximum limit. The soft --- 32,43 ---- that a program can have open at a time. There are typically three limits involved here. One is a kernel limitation, depending on your operating system you will either be able to tune the number of descriptors available ! to higher numbers (this is frequently called <EM>FD_SETSIZE</EM>). Or you may be stuck with a (relatively) low amount. The second limit is called ! the <EM>hard resource</EM> limit, and it is sometimes set by root in an obscure operating system file, but frequently is the same as the kernel ! limit. The third limit is called the <EM>soft ! resource</EM> limit. The soft limit is always less than or equal to the hard limit. For example, the hard limit may be 1024, but the soft limit only 64. Any user can raise their soft limit up to the hard limit. Root can raise the hard limit up to the system maximum limit. The soft *************** *** 65,123 **** <dl> ! <dt> <b>BSDI 2.0</b> ! <dd> Under BSDI 2.0 you can build Apache to support more descriptors ! by adding <code>-DFD_SETSIZE=nnn</code> to ! <code>EXTRA_CFLAGS</code> (where nnn is the number of descriptors ! you wish to support, keep it less than the hard limit). But it ! will run into trouble if more than approximately 240 Listen ! directives are used. This may be cured by rebuilding your kernel ! with a higher FD_SETSIZE. ! <p> ! ! <dt> <b>FreeBSD 2.2, BSDI 2.1+</b> ! <dd> Similar to the BSDI 2.0 case, you should define ! <code>FD_SETSIZE</code> and rebuild. But the extra ! Listen limitation doesn't exist. ! <p> ! ! <dt> <b>Linux</b> ! <dd> By default Linux has a kernel maximum of 256 open descriptors ! per process. There are several patches available for the ! 2.0.x series which raise this to 1024 and beyond, and you ! can find them in the "unofficial patches" section of <a ! href="http://www.linuxhq.com/">the Linux Information HQ</a>. ! None of these patches are perfect, and an entirely different ! approach is likely to be taken during the 2.1.x development. ! Applying these patches will raise the FD_SETSIZE used to compile ! all programs, and unless you rebuild all your libraries you should ! avoid running any other program with a soft descriptor limit above ! 256. As of this writing the patches available for increasing ! the number of descriptors do not take this into account. On a ! dedicated webserver you probably won't run into trouble. ! <p> ! ! <dt> <b>Solaris through 2.5.1</b> ! <dd> Solaris has a kernel hard limit of 1024 (may be lower in earlier ! versions). But it has a limitation that files using ! the stdio library cannot have a descriptor above 255. ! Apache uses the stdio library for the ErrorLog directive. ! When you have more than approximately 110 virtual hosts ! (with an error log and an access log each) you will need to ! build Apache with <code>-DHIGH_SLACK_LINE=256</code> added to ! <code>EXTRA_CFLAGS</code>. You will be limited to approximately ! 240 error logs if you do this. ! <p> ! ! <dt> <b>AIX version ??</b> ! <dd> AIX appears to have a hard limit of 128 descriptors. End of ! story. ! <p> ! ! <dt> <b>Others</b> ! <dd> If you have details on another operating system, please submit ! it through our <a href="http://www.apache.org/bug_report.html">Bug ! Report Page</a>. <p> </dl> --- 65,123 ---- <dl> ! <dt><STRONG>BSDI 2.0</STRONG> ! <dd>Under BSDI 2.0 you can build Apache to support more descriptors ! by adding <code>-DFD_SETSIZE=nnn</code> to ! <code>EXTRA_CFLAGS</code> (where nnn is the number of descriptors ! you wish to support, keep it less than the hard limit). But it ! will run into trouble if more than approximately 240 Listen ! directives are used. This may be cured by rebuilding your kernel ! with a higher FD_SETSIZE. ! <p> ! ! <dt><STRONG>FreeBSD 2.2, BSDI 2.1+</STRONG> ! <dd>Similar to the BSDI 2.0 case, you should define ! <code>FD_SETSIZE</code> and rebuild. But the extra ! Listen limitation doesn't exist. ! <p> ! ! <dt><STRONG>Linux</STRONG> ! <dd>By default Linux has a kernel maximum of 256 open descriptors ! per process. There are several patches available for the ! 2.0.x series which raise this to 1024 and beyond, and you ! can find them in the "unofficial patches" section of <a ! href="http://www.linuxhq.com/">the Linux Information HQ</a>. ! None of these patches are perfect, and an entirely different ! approach is likely to be taken during the 2.1.x development. ! Applying these patches will raise the FD_SETSIZE used to compile ! all programs, and unless you rebuild all your libraries you should ! avoid running any other program with a soft descriptor limit above ! 256. As of this writing the patches available for increasing ! the number of descriptors do not take this into account. On a ! dedicated webserver you probably won't run into trouble. ! <p> ! ! <dt><STRONG>Solaris through 2.5.1</STRONG> ! <dd>Solaris has a kernel hard limit of 1024 (may be lower in earlier ! versions). But it has a limitation that files using ! the stdio library cannot have a descriptor above 255. ! Apache uses the stdio library for the ErrorLog directive. ! When you have more than approximately 110 virtual hosts ! (with an error log and an access log each) you will need to ! build Apache with <code>-DHIGH_SLACK_LINE=256</code> added to ! <code>EXTRA_CFLAGS</code>. You will be limited to approximately ! 240 error logs if you do this. ! <p> ! ! <dt><STRONG>AIX version ??</STRONG> ! <dd>AIX appears to have a hard limit of 128 descriptors. End of ! story. ! <p> ! ! <dt><STRONG>Others</STRONG> ! <dd>If you have details on another operating system, please submit ! it through our <a href="http://www.apache.org/bug_report.html">Bug ! Report Page</a>. <p> </dl> *************** *** 128,135 **** fails if it ends up with a descriptor above 256. We suspect there are other libraries that similar limitations. So the code as of 1.2.1 takes a defensive stance and tries to save descriptors less than 16 ! for use while processing each request. This is called the <i>low ! slack line</i>. <p>Note that this shouldn't waste descriptors. If you really are pushing the limits and Apache can't get a descriptor above 16 when it wants --- 128,135 ---- fails if it ends up with a descriptor above 256. We suspect there are other libraries that similar limitations. So the code as of 1.2.1 takes a defensive stance and tries to save descriptors less than 16 ! for use while processing each request. This is called the <EM>low ! slack line</EM>. <p>Note that this shouldn't waste descriptors. If you really are pushing the limits and Apache can't get a descriptor above 16 when it wants 1.10 +19 -19 apache/htdocs/manual/misc/fin_wait_2.html Index: fin_wait_2.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/fin_wait_2.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** fin_wait_2.html 1997/06/28 20:55:43 1.9 --- fin_wait_2.html 1997/07/06 17:19:06 1.10 *************** *** 29,38 **** state that the connection is in during the period between when the server gets the ACK from the client and the server gets the FIN from the client is known as FIN_WAIT_2. See the <A ! HREF="ftp://ds.internic.net/rfc/rfc793.txt">TCP RFC</A> for the technical details of the state transitions.<P> ! The FIN_WAIT_2 state is somewhat unusual in that there is no timeout defined in the standard for it. This means that on many operating systems, a connection in the FIN_WAIT_2 state will stay around until the system is rebooted. If the system does not have a timeout and --- 29,38 ---- state that the connection is in during the period between when the server gets the ACK from the client and the server gets the FIN from the client is known as FIN_WAIT_2. See the <A ! HREF="ftp://ds.internic.net/rfc/rfc793.txt">TCP RFC</A> for the technical details of the state transitions.<P> ! The FIN_WAIT_2 state is somewhat unusual in that there is no timeout defined in the standard for it. This means that on many operating systems, a connection in the FIN_WAIT_2 state will stay around until the system is rebooted. If the system does not have a timeout and *************** *** 158,196 **** <LI><A HREF="http://www.freebsd.org/">FreeBSD</A> versions starting at 2.0 or possibly earlier. <LI><A HREF="http://www.netbsd.org/">NetBSD</A> version 1.2(?) <LI><A HREF="http://www.openbsd.org/">OpenBSD</A> all versions(?) ! <LI><A HREF="http://www.bsdi.com/">BSD/OS</A> 2.1, with the <A HREF="ftp://ftp.bsdi.com/bsdi/patches/patches-2.1/K210-027"> ! K210-027</A> patch installed. <LI><A HREF="http://www.sun.com/">Solaris</A> as of around version ! 2.2. The timeout can be tuned by using <CODE>ndd</CODE> to modify <CODE>tcp_fin_wait_2_flush_interval</CODE>, but the ! default should be appropriate for most servers and improper tuning can have negative impacts. <LI><A HREF="http://www.sco.com/">SCO TCP/IP Release 1.2.1</A> can be modified to have a timeout by following <A HREF="http://www.sco.com/cgi-bin/waisgate?WAISdocID=2242622956+0+0+0&WAISaction=retrieve"> SCO's instructions</A>. <LI><A HREF="http://www.linux.org/">Linux</A> 2.0.x and earlier(?) ! <LI><A HREF="http://www.hp.com/">HP-UX</A> 10.x defaults to ! terminating connections in the FIN_WAIT_2 state after the normal keepalive timeouts. This does not refer to the persistent connection or HTTP keepalive ! timeouts, but the <CODE>SO_LINGER</CODE> socket option ! which is enabled by Apache. This parameter can be adjusted by using <CODE>nettune</CODE> to modify parameters such as <CODE>tcp_keepstart</CODE> and <CODE>tcp_keepstop</CODE>. In later revisions, there is an explicit timer for connections in FIN_WAIT_2 that can be modified; contact HP support for details. <LI><A HREF="http://www.sgi.com/">SGI IRIX</A> can be patched to ! support a timeout. For IRIX 5.3, 6.2, and 6.3, use patches 1654, 1703 and 1778 respectively. If you have trouble locating these patches, please contact your SGI support channel for help. <LI><A HREF="http://www.ncr.com/">NCR's MP RAS Unix</A> 2.xx and 3.xx both have FIN_WAIT_2 timeouts. In 2.xx it is non-tunable at 600 seconds, while in 3.xx it defaults to 600 seconds and ! is calculated based on the tunable "max keep alive probes" (default of 8) multiplied by the "keep alive interval" (default 75 seconds). <LI><A HREF="http://www.sequent.com">Squent's ptx/TCP/IP for --- 158,196 ---- <LI><A HREF="http://www.freebsd.org/">FreeBSD</A> versions starting at 2.0 or possibly earlier. <LI><A HREF="http://www.netbsd.org/">NetBSD</A> version 1.2(?) <LI><A HREF="http://www.openbsd.org/">OpenBSD</A> all versions(?) ! <LI><A HREF="http://www.bsdi.com/">BSD/OS</A> 2.1, with the <A HREF="ftp://ftp.bsdi.com/bsdi/patches/patches-2.1/K210-027"> ! K210-027</A> patch installed. <LI><A HREF="http://www.sun.com/">Solaris</A> as of around version ! 2.2. The timeout can be tuned by using <CODE>ndd</CODE> to modify <CODE>tcp_fin_wait_2_flush_interval</CODE>, but the ! default should be appropriate for most servers and improper tuning can have negative impacts. <LI><A HREF="http://www.sco.com/">SCO TCP/IP Release 1.2.1</A> can be modified to have a timeout by following <A HREF="http://www.sco.com/cgi-bin/waisgate?WAISdocID=2242622956+0+0+0&WAISaction=retrieve"> SCO's instructions</A>. <LI><A HREF="http://www.linux.org/">Linux</A> 2.0.x and earlier(?) ! <LI><A HREF="http://www.hp.com/">HP-UX</A> 10.x defaults to ! terminating connections in the FIN_WAIT_2 state after the normal keepalive timeouts. This does not refer to the persistent connection or HTTP keepalive ! timeouts, but the <CODE>SO_LINGER</CODE> socket option ! which is enabled by Apache. This parameter can be adjusted by using <CODE>nettune</CODE> to modify parameters such as <CODE>tcp_keepstart</CODE> and <CODE>tcp_keepstop</CODE>. In later revisions, there is an explicit timer for connections in FIN_WAIT_2 that can be modified; contact HP support for details. <LI><A HREF="http://www.sgi.com/">SGI IRIX</A> can be patched to ! support a timeout. For IRIX 5.3, 6.2, and 6.3, use patches 1654, 1703 and 1778 respectively. If you have trouble locating these patches, please contact your SGI support channel for help. <LI><A HREF="http://www.ncr.com/">NCR's MP RAS Unix</A> 2.xx and 3.xx both have FIN_WAIT_2 timeouts. In 2.xx it is non-tunable at 600 seconds, while in 3.xx it defaults to 600 seconds and ! is calculated based on the tunable "max keep alive probes" (default of 8) multiplied by the "keep alive interval" (default 75 seconds). <LI><A HREF="http://www.sequent.com">Squent's ptx/TCP/IP for *************** *** 207,213 **** source should be easy to patch. </UL> <P> ! There is a <A HREF="http://www.apache.org/dist/contrib/patches/1.2/fin_wait_2.patch"> patch available</A> for adding a timeout to the FIN_WAIT_2 state; it was originally intended for BSD/OS, but should be adaptable to most --- 207,213 ---- source should be easy to patch. </UL> <P> ! There is a <A HREF="http://www.apache.org/dist/contrib/patches/1.2/fin_wait_2.patch"> patch available</A> for adding a timeout to the FIN_WAIT_2 state; it was originally intended for BSD/OS, but should be adaptable to most *************** *** 221,228 **** <CODE>lingering_close()</CODE> function. This will result in that section of code being similar to that which was in 1.1. If you do this, be aware that it can cause problems with PUTs, POSTs and ! persistent connections, especially if the client uses pipelining. ! That said, it is no worse than on 1.1, and we understand that keeping your server running is quite important.<P> To compile without the <CODE>lingering_close()</CODE> function, add --- 221,228 ---- <CODE>lingering_close()</CODE> function. This will result in that section of code being similar to that which was in 1.1. If you do this, be aware that it can cause problems with PUTs, POSTs and ! persistent connections, especially if the client uses pipelining. ! That said, it is no worse than on 1.1, and we understand that keeping your server running is quite important.<P> To compile without the <CODE>lingering_close()</CODE> function, add *************** *** 261,269 **** The exact way to increase them may depend on your OS; look for some reference to the number of "mbufs" or "mbuf clusters". On ! many systems, this can be done by adding the line ! <CODE>NMBCLUSTERS="n"</CODE>, where <CODE>n</CODE> is the number of ! mbuf clusters you want to your kernel config file and rebuilding your kernel.<P> </DL> --- 261,269 ---- The exact way to increase them may depend on your OS; look for some reference to the number of "mbufs" or "mbuf clusters". On ! many systems, this can be done by adding the line ! <CODE>NMBCLUSTERS="n"</CODE>, where <CODE>n</CODE> is the number of ! mbuf clusters you want to your kernel config file and rebuilding your kernel.<P> </DL> *************** *** 305,311 **** There are two conditions under which this is likely to occur: <OL> <LI>sending POST or PUT data without proper authorization ! <LI>sending multiple requests before each response (pipelining) and one of the middle requests resulting in an error or other break-the-connection result. </OL> --- 305,311 ---- There are two conditions under which this is likely to occur: <OL> <LI>sending POST or PUT data without proper authorization ! <LI>sending multiple requests before each response (pipelining) and one of the middle requests resulting in an error or other break-the-connection result. </OL> 1.23 +6 -6 apache/htdocs/manual/misc/known_bugs.html Index: known_bugs.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/known_bugs.html,v retrieving revision 1.22 retrieving revision 1.23 diff -C3 -r1.22 -r1.23 *** known_bugs.html 1997/07/06 14:54:48 1.22 --- known_bugs.html 1997/07/06 17:19:06 1.23 *************** *** 48,54 **** <a name="cnegbug">Apache's</A> <A HREF="../content-negotiation.html">Content Negotiation</A> should pick the smallest variant if there are several that are equally acceptable. A bug in 1.2 means it no ! longer does this unless all the variants have character sets. This <A HREF="../../dist/contrib/patches/1.2/conneg-bug.patch">patch</A> fixes this problem. It also fixes the problem which makes Apache pick the last equally acceptable variant instead of the first. --- 48,54 ---- <a name="cnegbug">Apache's</A> <A HREF="../content-negotiation.html">Content Negotiation</A> should pick the smallest variant if there are several that are equally acceptable. A bug in 1.2 means it no ! longer does this unless all the variants have character sets. This <A HREF="../../dist/contrib/patches/1.2/conneg-bug.patch">patch</A> fixes this problem. It also fixes the problem which makes Apache pick the last equally acceptable variant instead of the first. *************** *** 58,64 **** <LI> The PATH_INFO part of a request URI cannot include the sequence ! <CODE>%2f</CODE>. This will be tracked as <A HREF="http://www.apache.org/bugdb.cgi/full/543">PR#543</A>. <P></LI> --- 58,64 ---- <LI> The PATH_INFO part of a request URI cannot include the sequence ! <CODE>%2f</CODE>. This will be tracked as <A HREF="http://www.apache.org/bugdb.cgi/full/543">PR#543</A>. <P></LI> *************** *** 80,94 **** <LI>If compilation fails complaining about "unknown symbol __inet_ntoa()" then you have probably installed version 8 of bind. You will need to ! explicitly link with the bind library by adding <CODE>-lbind</CODE> to <CODE>EXTRA_LDFLAGS</CODE> in <CODE>Configuration</CODE>. See <A HREF="http://www.apache.org/bugdb.cgi/full/616">PR#616</A> ! and the <A HREF="FAQ.html#bind8.1">Apache FAQ</A>. <P></LI> <LI>The message "<CODE>created shared memory segment #730499</CODE>" ! in error_log is not an error and should be ignored. See <a href="http://www.apache.org/bugdb.cgi/full/696">PR#696</A>. <P></LI> --- 80,94 ---- <LI>If compilation fails complaining about "unknown symbol __inet_ntoa()" then you have probably installed version 8 of bind. You will need to ! explicitly link with the bind library by adding <CODE>-lbind</CODE> to <CODE>EXTRA_LDFLAGS</CODE> in <CODE>Configuration</CODE>. See <A HREF="http://www.apache.org/bugdb.cgi/full/616">PR#616</A> ! and the <A HREF="FAQ.html#bind8.1">Apache FAQ</A>. <P></LI> <LI>The message "<CODE>created shared memory segment #730499</CODE>" ! in error_log is not an error and should be ignored. See <a href="http://www.apache.org/bugdb.cgi/full/696">PR#696</A>. <P></LI> *************** *** 104,110 **** virtual hosts. This appears similar to a file-descriptor limit but BSDI should not have this problem. This will be tracked as <A HREF="http://www.apache.org/bugdb.cgi/full/611">PR#611</A>. ! See also the <A HREF="FAQ.html#fdlim">Apache FAQ</A>. <P></LI> <LI><a href="descriptors.html"><b>Workaround available in 1.2.1.</b></a> --- 104,110 ---- virtual hosts. This appears similar to a file-descriptor limit but BSDI should not have this problem. This will be tracked as <A HREF="http://www.apache.org/bugdb.cgi/full/611">PR#611</A>. ! See also the <A HREF="FAQ.html#fdlim">Apache FAQ</A>. <P></LI> <LI><a href="descriptors.html"><b>Workaround available in 1.2.1.</b></a> 1.6 +1 -1 apache/htdocs/manual/misc/nopgp.html Index: nopgp.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/nopgp.html,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** nopgp.html 1997/06/24 18:39:35 1.5 --- nopgp.html 1997/07/06 17:19:06 1.6 *************** *** 54,60 **** </UL> ! It kind of sickens us that we had to do it, but so be it. <P> --- 54,60 ---- </UL> ! It kind of sickens us that we had to do it, but so be it. <P> 1.8 +4 -4 apache/htdocs/manual/misc/perf-bsd44.html Index: perf-bsd44.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/perf-bsd44.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** perf-bsd44.html 1997/06/06 01:04:52 1.7 --- perf-bsd44.html 1997/07/06 17:19:06 1.8 *************** *** 41,47 **** <p> After the edit, recompile the kernel and recompile the Apache server ! then reboot. <P> --- 41,47 ---- <p> After the edit, recompile the kernel and recompile the Apache server ! then reboot. <P> *************** *** 134,141 **** which time its mbufs are not yet freed. Another reason is that, on server timeouts, some connections end up in FIN_WAIT_2 state forever, because this state doesn't time out on the server, and the browser never sent ! a final FIN. For more details see the ! <A HREF="fin_wait_2.html">FIN_WAIT_2</A> page. <p> --- 134,141 ---- which time its mbufs are not yet freed. Another reason is that, on server timeouts, some connections end up in FIN_WAIT_2 state forever, because this state doesn't time out on the server, and the browser never sent ! a final FIN. For more details see the ! <A HREF="fin_wait_2.html">FIN_WAIT_2</A> page. <p> *************** *** 169,175 **** Be aware that your system may not boot with a kernel that is configured to use more resources than you have available system RAM. <b>ALWAYS</b> have a known bootable kernel available when tuning your system this way, ! and use the system tools beforehand to learn if you need to buy more memory before tuning. <p> --- 169,175 ---- Be aware that your system may not boot with a kernel that is configured to use more resources than you have available system RAM. <b>ALWAYS</b> have a known bootable kernel available when tuning your system this way, ! and use the system tools beforehand to learn if you need to buy more memory before tuning. <p> 1.5 +1 -1 apache/htdocs/manual/misc/perf-dec.html Index: perf-dec.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/perf-dec.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** perf-dec.html 1997/06/04 11:42:58 1.4 --- perf-dec.html 1997/07/06 17:19:07 1.5 *************** *** 16,22 **** Below is a set of newsgroup posts made by an engineer from DEC in response to queries about how to modify DEC's Digital Unix OS for more ! heavily loaded web sites. Copied with permission. <HR> --- 16,22 ---- Below is a set of newsgroup posts made by an engineer from DEC in response to queries about how to modify DEC's Digital Unix OS for more ! heavily loaded web sites. Copied with permission. <HR> 1.11 +9 -8 apache/htdocs/manual/misc/perf.html Index: perf.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/perf.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** perf.html 1997/06/24 18:39:35 1.10 --- perf.html 1997/07/06 17:19:07 1.11 *************** *** 59,69 **** Digital UNIX </A></H3> ! <UL> ! <LI><A HREF="http://www.digital.com/info/internet/document/ias/tuning.html">DIGITAL ! UNIX Tuning Parameters for Web Servers</A> ! <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how to tune ! Digital UNIX 3.2 and 4.0. </UL> <P><HR> --- 59,70 ---- Digital UNIX </A></H3> ! <UL> ! <LI><A ! HREF="http://www.digital.com/info/internet/document/ias/tuning.html" ! >DIGITAL UNIX Tuning Parameters for Web Servers</A> ! <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how ! to tune Digital UNIX 3.2 and 4.0. </UL> <P><HR> *************** *** 108,114 **** <UL> <LI><A href="http://www.sun.com/sun-on-net/Sun.Internet.Solutions/performance/"> ! World Wide Web Server Performance, <http://www.sun.com/sun-on-net/Sun.Internet.Solutions/performance/></a> <LI><A HREF="http://www.sun.com/solaris/products/siss/"> Solaris Internet Server Supplement for 2.5.1</A> --- 109,115 ---- <UL> <LI><A href="http://www.sun.com/sun-on-net/Sun.Internet.Solutions/performance/"> ! World Wide Web Server Performance, <http://www.sun.com/sun-on-net/Sun.Internet.Solutions/performance/></a> <LI><A HREF="http://www.sun.com/solaris/products/siss/"> Solaris Internet Server Supplement for 2.5.1</A> *************** *** 120,128 **** SunOS 4.x </A></H3> ! More information on tuning SOMAXCONN on SunOS can be found at <A HREF="http://www.islandnet.com/~mark/somaxconn.html"> ! http://www.islandnet.com/~mark/somaxconn.html</A>. <P><HR> --- 121,129 ---- SunOS 4.x </A></H3> ! More information on tuning SOMAXCONN on SunOS can be found at <A HREF="http://www.islandnet.com/~mark/somaxconn.html"> ! http://www.islandnet.com/~mark/somaxconn.html</A>. <P><HR> 1.10 +2 -2 apache/htdocs/manual/misc/security_tips.html Index: security_tips.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/security_tips.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** security_tips.html 1997/07/02 02:22:03 1.9 --- security_tips.html 1997/07/06 17:19:07 1.10 *************** *** 24,37 **** <H2>Permissions on Log File Directories</H2> <P>When Apache starts, it opens the log files as the user who started the ! server before switching to the user defined in the <a href="../mod/core.html#user"><b>User</b></a> directive. Anyone who has write permission for the directory where any log files are being written to can append pseudo-arbitrary data to any file on the system which is writable by the user who starts Apache. Since the server is normally started by root, you should <EM>NOT</EM> give anyone write permission to the directory where logs are stored unless you ! want them to have root access. <P> <HR> <H2>Server Side Includes</H2> --- 24,37 ---- <H2>Permissions on Log File Directories</H2> <P>When Apache starts, it opens the log files as the user who started the ! server before switching to the user defined in the <a href="../mod/core.html#user"><b>User</b></a> directive. Anyone who has write permission for the directory where any log files are being written to can append pseudo-arbitrary data to any file on the system which is writable by the user who starts Apache. Since the server is normally started by root, you should <EM>NOT</EM> give anyone write permission to the directory where logs are stored unless you ! want them to have root access. <P> <HR> <H2>Server Side Includes</H2> 1.8 +23 -23 apache/htdocs/manual/misc/vif-info.html Index: vif-info.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/misc/vif-info.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** vif-info.html 1997/06/24 18:39:35 1.7 --- vif-info.html 1997/07/06 17:19:08 1.8 *************** *** 26,32 **** This is a topic that comes up once in a while on comp.protocols.tcp-ip and other newsgroups. The question is, how to get a machine with one ! network interface to respond to more than one IP addresses. I have a solution than might suit you. For my doctoral work (there's a paper about it in this year's ('91) SIGCOMM, also available for --- 26,32 ---- This is a topic that comes up once in a while on comp.protocols.tcp-ip and other newsgroups. The question is, how to get a machine with one ! network interface to respond to more than one IP addresses. I have a solution than might suit you. For my doctoral work (there's a paper about it in this year's ('91) SIGCOMM, also available for *************** *** 52,67 **** ifconfig le0 198.3.2.1 up -trailers # config primary interface ifconfig vif0 198.4.3.2 up # config first virtual interface ! route delete net 198.4.3 198.4.3.2 # delete spurious route route add host 198.4.3.2 198.4.3.2 0 # add route for this i/f ifconfig vif1 198.5.4.3 up # config second virtual interface ! route delete net 198.5.4 198.5.4.3 # delete spurious route route add host 198.5.4.3 198.5.4.3 0 # add route for this i/f The route deletes are needed because the ifconfig creates a default route to the interface's network, which can cause problems; all that's ! needed is the (host) route to the interface's address. Now, get le0's ethernet address (say, 8:0:20:3:2:1), and add the following static ARP entries: --- 52,67 ---- ifconfig le0 198.3.2.1 up -trailers # config primary interface ifconfig vif0 198.4.3.2 up # config first virtual interface ! route delete net 198.4.3 198.4.3.2 # delete spurious route route add host 198.4.3.2 198.4.3.2 0 # add route for this i/f ifconfig vif1 198.5.4.3 up # config second virtual interface ! route delete net 198.5.4 198.5.4.3 # delete spurious route route add host 198.5.4.3 198.5.4.3 0 # add route for this i/f The route deletes are needed because the ifconfig creates a default route to the interface's network, which can cause problems; all that's ! needed is the (host) route to the interface's address. Now, get le0's ethernet address (say, 8:0:20:3:2:1), and add the following static ARP entries: *************** *** 70,81 **** arp -s 198.5.4.3 8:0:20:3:2:1 pub This will cause any ARP requests for the VIF addresses to be replied ! with your machine's ethernet address. Now, make sure your default route is to your segment's gateway, through the real interface. Finally, make sure your routers and/or hosts on the same segment as yours know that 198.4.3.2 and 198.5.4.3 ! are on that cable. Here's what you've accomplished. --- 70,81 ---- arp -s 198.5.4.3 8:0:20:3:2:1 pub This will cause any ARP requests for the VIF addresses to be replied ! with your machine's ethernet address. Now, make sure your default route is to your segment's gateway, through the real interface. Finally, make sure your routers and/or hosts on the same segment as yours know that 198.4.3.2 and 198.5.4.3 ! are on that cable. Here's what you've accomplished. *************** *** 85,91 **** reaching your host with any of these addresses will be accepted by the ip_input routine because they match the address of one of the host's interfaces. Packets leaving your host can have any of its addresses ! (real and virtual). The code for vif follows. To use it, put the stuff in netinet/if_vif.c and netinet/if_vif.h, configure your kernel with the number of --- 85,91 ---- reaching your host with any of these addresses will be accepted by the ip_input routine because they match the address of one of the host's interfaces. Packets leaving your host can have any of its addresses ! (real and virtual). The code for vif follows. To use it, put the stuff in netinet/if_vif.c and netinet/if_vif.h, configure your kernel with the number of *************** *** 134,143 **** Finally, here's the code. It has the tunneling pieces removed (you need more code to use that anyway), and it comes from a Mach 2.6 kernel; it should compile on any Berkeley-derived unix with minor ! changes (most likely only in the includes). ---------------------netinet/if_vif.h-------------------------------------- ! typedef struct { struct ifnet vif_if; struct ifnet *vif_sif; /* slave interface */ --- 134,143 ---- Finally, here's the code. It has the tunneling pieces removed (you need more code to use that anyway), and it comes from a Mach 2.6 kernel; it should compile on any Berkeley-derived unix with minor ! changes (most likely only in the includes). ---------------------netinet/if_vif.h-------------------------------------- ! typedef struct { struct ifnet vif_if; struct ifnet *vif_sif; /* slave interface */ *************** *** 194,200 **** register int i; register struct ifnet *ifp; int vifoutput(), vififioctl(); ! for (i=0; i<NVIF; i++) { ifp = &vif_softc[i].vif_if; --- 194,200 ---- register int i; register struct ifnet *ifp; int vifoutput(), vififioctl(); ! for (i=0; i<NVIF; i++) { ifp = &vif_softc[i].vif_if; *************** *** 212,231 **** int dev, flag; { int unit; ! if (!vifs_inited) { vifattach(); vifs_inited = 1; printf("vif initialized\n"); } ! unit = minor(dev); if ((unit < 0) || (unit >= NVIF)) { return ENXIO; } ! return 0; } --- 212,231 ---- int dev, flag; { int unit; ! if (!vifs_inited) { vifattach(); vifs_inited = 1; printf("vif initialized\n"); } ! unit = minor(dev); if ((unit < 0) || (unit >= NVIF)) { return ENXIO; } ! return 0; } *************** *** 259,268 **** register struct ifqueue *ifq; struct mbuf *m; struct sockaddr_in *din; ! if (dst->sa_family != AF_INET) { ! printf("%s%d: can't handle af%d\n", ifp->if_name, ifp->if_unit, dst->sa_family); m_freem(m0); --- 259,268 ---- register struct ifqueue *ifq; struct mbuf *m; struct sockaddr_in *din; ! if (dst->sa_family != AF_INET) { ! printf("%s%d: can't handle af%d\n", ifp->if_name, ifp->if_unit, dst->sa_family); m_freem(m0); *************** *** 270,280 **** } din = (struct sockaddr_in *)dst; ! if (din->sin_addr.s_addr == IA_SIN(ifp->if_addrlist)->sin_addr.s_addr) { /* printf("%s%d: looping\n", ifp->if_name, ifp->if_unit); */ ! /* * Place interface pointer before the data * for the receiving protocol. --- 270,280 ---- } din = (struct sockaddr_in *)dst; ! if (din->sin_addr.s_addr == IA_SIN(ifp->if_addrlist)->sin_addr.s_addr) { /* printf("%s%d: looping\n", ifp->if_name, ifp->if_unit); */ ! /* * Place interface pointer before the data * for the receiving protocol. *************** *** 345,358 **** int mode; { int unit; ! unit = minor(dev); if ((unit < 0) || (unit >= NVIF)) return ENXIO; ! return EINVAL; } ! ---------------------------------------------------------------------------- To use it, compile your kernel, and reboot. Then create the vif device: --- 345,358 ---- int mode; { int unit; ! unit = minor(dev); if ((unit < 0) || (unit >= NVIF)) return ENXIO; ! return EINVAL; } ! ---------------------------------------------------------------------------- To use it, compile your kernel, and reboot. Then create the vif device: *************** *** 367,381 **** This will cause the device to be opened, which will if_attach the interfaces. If you feel like playing with the code, you may want to kmem_alloc() the vif_softc structrure at open time, and use the minor ! number of the device to tell it how many interfaces to create. ! Now you can go ahead and ifconfig etc. I'll be happy to answer minor questions, and hear about success and failure stories, but I cannot help you if you don't already know how to hack kernels. ! Good luck! /ji --- 367,381 ---- This will cause the device to be opened, which will if_attach the interfaces. If you feel like playing with the code, you may want to kmem_alloc() the vif_softc structrure at open time, and use the minor ! number of the device to tell it how many interfaces to create. ! Now you can go ahead and ifconfig etc. I'll be happy to answer minor questions, and hear about success and failure stories, but I cannot help you if you don't already know how to hack kernels. ! Good luck! /ji 1.62 +19 -18 apache/htdocs/manual/mod/core.html Index: core.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/core.html,v retrieving revision 1.61 retrieving revision 1.62 diff -C3 -r1.61 -r1.62 *** core.html 1997/07/06 14:54:49 1.61 --- core.html 1997/07/06 17:19:13 1.62 *************** *** 397,410 **** <LI>redirect to an external URL to handle the problem/error </OL> ! <P>The first option is the default, while options 2-4 are configured ! using the <CODE>ErrorDocument</CODE> directive, which is followed by the HTTP response code and a message or URL. <P><em>Messages</em> in this context begin with a single quote ! (<code>"</code>), which does not form part of the message itself. ! Apache will sometimes offer additional information regarding the ! problem/error. <P>URLs can begin with a slash (/) for local URLs, or be a full URL which the client can resolve. Examples: --- 397,410 ---- <LI>redirect to an external URL to handle the problem/error </OL> ! <P>The first option is the default, while options 2-4 are configured ! using the <CODE>ErrorDocument</CODE> directive, which is followed by the HTTP response code and a message or URL. <P><em>Messages</em> in this context begin with a single quote ! (<code>"</code>), which does not form part of the message itself. ! Apache will sometimes offer additional information regarding the ! problem/error. <P>URLs can begin with a slash (/) for local URLs, or be a full URL which the client can resolve. Examples: *************** *** 415,424 **** ErrorDocument 403 "Sorry can't allow you access today </code></blockquote> ! <P>Note that when you specify an <CODE>ErrorDocument</CODE> that ! points to a remote URL (ie. anything with a method such as "http" in front of it) Apache will send a redirect to the client to tell it ! where to find the document, even if the document ends up being on the same server.. This has several implications, the most important being that <STRONG>if you use an "ErrorDocument 401" directive then it must refer to a local document.</STRONG> This results --- 415,424 ---- ErrorDocument 403 "Sorry can't allow you access today </code></blockquote> ! <P>Note that when you specify an <CODE>ErrorDocument</CODE> that ! points to a remote URL (ie. anything with a method such as "http" in front of it) Apache will send a redirect to the client to tell it ! where to find the document, even if the document ends up being on the same server.. This has several implications, the most important being that <STRONG>if you use an "ErrorDocument 401" directive then it must refer to a local document.</STRONG> This results *************** *** 441,447 **** <blockquote><code>ErrorLog /dev/null</code></blockquote> This effectively turns off error logging.<p> ! SECURITY: See the <A HREF="../misc/security_tips.html">security tips</A> document for details on why your security could be compromised if the directory where logfiles are stored is writable by anyone other than the user that starts the server. --- 441,447 ---- <blockquote><code>ErrorLog /dev/null</code></blockquote> This effectively turns off error logging.<p> ! SECURITY: See the <A HREF="../misc/security_tips.html">security tips</A> document for details on why your security could be compromised if the directory where logfiles are stored is writable by anyone other than the user that starts the server. *************** *** 467,475 **** <Directory> sections and <code>.htaccess</code> files are read, but before <Location> sections.</p> ! <p>The <em>filename</em> argument should include a filename, or a wild-card string, where `?' matches any single character, and `*' matches any ! sequences of characters. Extended regular expressions can also be used, with the addition of the <code>~</code> character. For example:</p> <pre> --- 467,476 ---- <Directory> sections and <code>.htaccess</code> files are read, but before <Location> sections.</p> ! <p>The <em>filename</em> argument should include a filename, or a wild-card string, where `?' matches any single character, and `*' matches any ! sequences of characters. Extended regular expressions can also be used, ! with the addition of the <code>~</code> character. For example:</p> <pre> *************** *** 670,676 **** The maximum length of the queue of pending connections. Generally no tuning is needed or desired, however on some systems it is desirable ! to increase this when under a TCP SYN flood attack. See the backlog parameter to the <code>listen(2)</code> system call. <h2><A name="limit"><Limit> directive</A></h2> --- 671,677 ---- The maximum length of the queue of pending connections. Generally no tuning is needed or desired, however on some systems it is desirable ! to increase this when under a TCP SYN flood attack. See the backlog parameter to the <code>listen(2)</code> system call. <h2><A name="limit"><Limit> directive</A></h2> *************** *** 852,858 **** <strong>Status:</strong> core<p> The Options directive controls which server features are available in ! a particular directory. <p> <em>option</em> can be set to <code>None</code>, in which case none of the extra features are enabled, or one or more of the following: --- 853,859 ---- <strong>Status:</strong> core<p> The Options directive controls which server features are available in ! a particular directory. <p> <em>option</em> can be set to <code>None</code>, in which case none of the extra features are enabled, or one or more of the following: *************** *** 982,988 **** sets the <code>SERVER_PORT</code> environment variable (for <a href="mod_cgi.html">CGI</a> and <a href="mod_include.html">SSI</a>), and is used when the server must generate a URL that refers to itself ! (for example when creating an external redirect to itself). </ul> In no event does a Port setting affect --- 983,989 ---- sets the <code>SERVER_PORT</code> environment variable (for <a href="mod_cgi.html">CGI</a> and <a href="mod_include.html">SSI</a>), and is used when the server must generate a URL that refers to itself ! (for example when creating an external redirect to itself). </ul> In no event does a Port setting affect *************** *** 1065,1071 **** See also <A HREF="#accessconfig">AccessConfig</A>.<p><hr> ! <H2><A name="rlimit">RLimitCPU</A> <A NAME="rlimit">directive</A></H2> <!--%plaintext <?INDEX {\tt RLimitCPU} directive> --> <strong>Syntax:</strong> RLimitCPU <em># or 'max'</em> <em>[# or 'max']</em><br> <strong>Default:</strong> <code>Unset uses operating system defaults</code><br> --- 1066,1072 ---- See also <A HREF="#accessconfig">AccessConfig</A>.<p><hr> ! <H2><A name="rlimit">RLimitCPU</A> <A NAME="rlimitcpu">directive</A></H2> <!--%plaintext <?INDEX {\tt RLimitCPU} directive> --> <strong>Syntax:</strong> RLimitCPU <em># or 'max'</em> <em>[# or 'max']</em><br> <strong>Default:</strong> <code>Unset uses operating system defaults</code><br> *************** *** 1335,1341 **** <LI>The total amount of time it takes to receive a GET request. <LI>The amount of time between receipt of TCP packets on a POST or PUT request. ! <LI>The amount of time between ACKs on transmissions of TCP packets in responses. </OL> --- 1336,1342 ---- <LI>The total amount of time it takes to receive a GET request. <LI>The amount of time between receipt of TCP packets on a POST or PUT request. ! <LI>The amount of time between ACKs on transmissions of TCP packets in responses. </OL> *************** *** 1400,1406 **** <VirtualHost> and </VirtualHost> are used to enclose a group of directives which will apply only to a particular virtual host. ! Any directive which is allowed in a virtual host context may be used. When the server receives a request for a document on a particular virtual host, it uses the configuration directives enclosed in the <VirtualHost> section. <em>Addr</em> can be --- 1401,1407 ---- <VirtualHost> and </VirtualHost> are used to enclose a group of directives which will apply only to a particular virtual host. ! Any directive which is allowed in a virtual host context may be used. When the server receives a request for a document on a particular virtual host, it uses the configuration directives enclosed in the <VirtualHost> section. <em>Addr</em> can be *************** *** 1440,1446 **** (This is recommended when used with <code>_default_</code>.)<p> <strong>SECURITY</strong>: See the ! <A HREF="../misc/security_tips.html">security tips</A> document for details on why your security could be compromised if the directory where logfiles are stored is writable by anyone other than the user that starts the server. --- 1441,1447 ---- (This is recommended when used with <code>_default_</code>.)<p> <strong>SECURITY</strong>: See the ! <A HREF="../misc/security_tips.html">security tips</A> document for details on why your security could be compromised if the directory where logfiles are stored is writable by anyone other than the user that starts the server. 1.23 +1 -1 apache/htdocs/manual/mod/directives.html Index: directives.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/directives.html,v retrieving revision 1.22 retrieving revision 1.23 diff -C3 -r1.22 -r1.23 *** directives.html 1997/06/29 01:14:16 1.22 --- directives.html 1997/07/06 17:19:14 1.23 *************** *** 13,19 **** ALINK="#FF0000" > <!--#include virtual="header.html" --> ! <H1 ALIGN="CENTER">Apache directives</H1> <ul> <li><A HREF="core.html#accessconfig">AccessConfig</A> --- 13,19 ---- ALINK="#FF0000" > <!--#include virtual="header.html" --> ! <H1 ALIGN="CENTER">Apache Directives</H1> <ul> <li><A HREF="core.html#accessconfig">AccessConfig</A> 1.14 +2 -2 apache/htdocs/manual/mod/index.html Index: index.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/index.html,v retrieving revision 1.13 retrieving revision 1.14 diff -C3 -r1.13 -r1.14 *** index.html 1997/06/04 16:14:14 1.13 --- index.html 1997/07/06 17:19:14 1.14 *************** *** 76,82 **** <dt><A HREF="mod_log_agent.html">mod_log_agent</A> <dd>Logging of User Agents. <dt><A HREF="mod_log_common.html">mod_log_common</A> up to Apache 1.1.1 ! <dd>Standard logging in the Common Logfile Format. Replaced by the mod_log_config module in Apache 1.2 and up <dt><A HREF="mod_log_config.html">mod_log_config</A> <dd>User-configurable logging replacement for mod_log_common. --- 76,82 ---- <dt><A HREF="mod_log_agent.html">mod_log_agent</A> <dd>Logging of User Agents. <dt><A HREF="mod_log_common.html">mod_log_common</A> up to Apache 1.1.1 ! <dd>Standard logging in the Common Logfile Format. Replaced by the mod_log_config module in Apache 1.2 and up <dt><A HREF="mod_log_config.html">mod_log_config</A> <dd>User-configurable logging replacement for mod_log_common. *************** *** 95,101 **** <dt><A HREF="mod_userdir.html">mod_userdir</A> <dd>User home directories. <dt><A HREF="mod_usertrack.html">mod_usertrack</A> Apache 1.2 and up ! <dd>User tracking using Cookies (replacement for mod_cookies.c) </dl> <!--#include virtual="footer.html" --> --- 95,101 ---- <dt><A HREF="mod_userdir.html">mod_userdir</A> <dd>User home directories. <dt><A HREF="mod_usertrack.html">mod_usertrack</A> Apache 1.2 and up ! <dd>User tracking using Cookies (replacement for mod_cookies.c) </dl> <!--#include virtual="footer.html" --> 1.9 +83 -45 apache/htdocs/manual/mod/mod_access.html Index: mod_access.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_access.html,v retrieving revision 1.8 retrieving revision 1.9 diff -C3 -r1.8 -r1.9 *** mod_access.html 1997/06/04 16:14:14 1.8 --- mod_access.html 1997/07/06 17:19:14 1.9 *************** *** 15,77 **** <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Module mod_access</h1> ! This module is contained in the <code>mod_access.c</code> file, and is compiled in by default. It provides access control based on client hostname or IP address. ! ! <menu> <li><A HREF="#allow">allow</A> <li><A HREF="#allowfromenv">allow from env=</A> <li><A HREF="#deny">deny</A> <li><A HREF="#denyfromenv">deny from env=</A> <li><A HREF="#order">order</A> ! </menu> <hr> ! <A name="allow"><h2>allow</h2></A> <!--%plaintext <?INDEX {\tt allow} directive> --> <strong>Syntax:</strong> allow from <em>host host ...</em><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_access<p> ! The allow directive affects which hosts can access a given directory. <em>Host</em> is one of the following: <dl> <dt><code>all</code> ! <dd>all hosts are allowed access <dt>A (partial) domain-name ! <dd>host whose name is, or ends in, this string are allowed access. <dt>A full IP address <dd>An IP address of a host allowed access <dt>A partial IP address <dd>The first 1 to 3 bytes of an IP address, for subnet restriction. </dl> ! ! Example:<blockquote><code>allow from .ncsa.uiuc.edu</code></blockquote> ! All hosts in the specified domain are allowed access.<p> ! Note that this compares whole components; <code>bar.edu</code> ! would not match <code>foobar.edu</code>.<p> ! See also <A HREF="#deny">deny</A>, <A HREF="#order">order</A>, and ! <a href="mod_browser.html#browsermatch">BrowserMatch</a>.<p> <a name="allowfromenv"><strong>Syntax:</strong> allow from env=<em>variablename</em></a><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_access<br> ! <strong>Compatibility:</strong> Apache 1.2 and above<p> ! The allow from env directive controls access to a directory by the existence (or non-existence) of an environment variable. ! ! Example:<blockquote><pre> BrowserMatch ^KnockKnock/2.0 let_me_in <Directory /docroot> order allow,deny --- 15,91 ---- <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Module mod_access</h1> ! <P> This module is contained in the <code>mod_access.c</code> file, and is compiled in by default. It provides access control based on client hostname or IP address. + </P> ! <UL> <li><A HREF="#allow">allow</A> <li><A HREF="#allowfromenv">allow from env=</A> <li><A HREF="#deny">deny</A> <li><A HREF="#denyfromenv">deny from env=</A> <li><A HREF="#order">order</A> ! </UL> <hr> ! <h2><A name="allow">allow directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt allow} directive> --> <strong>Syntax:</strong> allow from <em>host host ...</em><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_access ! </p> ! <P> The allow directive affects which hosts can access a given directory. <em>Host</em> is one of the following: + </P> <dl> <dt><code>all</code> ! <dd>All hosts are allowed access <dt>A (partial) domain-name ! <dd>Hosts whose names match, or end in, this string are allowed access. <dt>A full IP address <dd>An IP address of a host allowed access <dt>A partial IP address <dd>The first 1 to 3 bytes of an IP address, for subnet restriction. </dl> ! <P> ! Example: ! </P> ! <blockquote><code>allow from .ncsa.uiuc.edu</code></blockquote> ! <P> ! All hosts in the specified domain are allowed access. ! </p> ! <P> Note that this compares whole components; <code>bar.edu</code> ! would not match <code>foobar.edu</code>. ! </P> ! <P> See also <A HREF="#deny">deny</A>, <A HREF="#order">order</A>, and ! <a href="mod_browser.html#browsermatch">BrowserMatch</a>. ! </p> + <P> <a name="allowfromenv"><strong>Syntax:</strong> allow from env=<em>variablename</em></a><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_access<br> ! <strong>Compatibility:</strong> Apache 1.2 and above ! </p> ! <P> The allow from env directive controls access to a directory by the existence (or non-existence) of an environment variable. ! </P> ! <P> ! Example: ! </P> ! <blockquote><pre> BrowserMatch ^KnockKnock/2.0 let_me_in <Directory /docroot> order allow,deny *************** *** 79,98 **** deny from all </Directory> </pre></blockquote> ! See also <A HREF="#denyfromenv">deny from env</A> ! and <A HREF="#order">order</A>.<p><hr> ! <A name="deny"><h2>deny</h2></A> <!--%plaintext <?INDEX {\tt deny} directive> --> <strong>Syntax:</strong> deny from <em>host host ...</em><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_access<p> ! The deny directive affects which hosts can access a given directory. <em>Host</em> is one of the following: <dl> <dt><code>all</code> <dd>all hosts are denied access --- 93,117 ---- deny from all </Directory> </pre></blockquote> ! <P> See also <A HREF="#denyfromenv">deny from env</A> ! and <A HREF="#order">order</A>. ! </p> ! <hr> ! <h2><A name="deny">deny directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt deny} directive> --> <strong>Syntax:</strong> deny from <em>host host ...</em><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_access ! </p> ! <P> The deny directive affects which hosts can access a given directory. <em>Host</em> is one of the following: + </P> <dl> <dt><code>all</code> <dd>all hosts are denied access *************** *** 103,128 **** <dt>A partial IP address <dd>The first 1 to 3 bytes of an IP address, for subnet restriction. </dl> ! ! Example:<blockquote><code>deny from 16</code></blockquote> ! All hosts in the specified network are denied access.<p> ! Note that this compares whole components; <code>bar.edu</code> ! would not match <code>foobar.edu</code>.<p> ! ! See also <A HREF="#allow">allow</A> and <A HREF="#order">order</A>.<p> <a name="denyfromenv"><strong>Syntax:</strong> deny from env=<em>variablename</em></a><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_access<br> ! <strong>Compatibility:</strong> Apache 1.2 and above<p> ! The deny from env directive controls access to a directory by the existence (or non-existence) of an environment variable. ! ! Example:<blockquote><pre> BrowserMatch ^BadRobot/0.9 go_away <Directory /docroot> order deny,allow --- 122,158 ---- <dt>A partial IP address <dd>The first 1 to 3 bytes of an IP address, for subnet restriction. </dl> ! <P> ! Example: ! </P> ! <blockquote><code>deny from 16</code></blockquote> ! <P> ! All hosts in the specified network are denied access. ! </p> ! <P> Note that this compares whole components; <code>bar.edu</code> ! would not match <code>foobar.edu</code>. ! </p> ! <P> ! See also <A HREF="#allow">allow</A> and <A HREF="#order">order</A>. ! </p> + <P> <a name="denyfromenv"><strong>Syntax:</strong> deny from env=<em>variablename</em></a><br> <Strong>Context:</strong> directory, .htaccess<br> <Strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_access<br> ! <strong>Compatibility:</strong> Apache 1.2 and above ! </p> ! <P> The deny from env directive controls access to a directory by the existence (or non-existence) of an environment variable. ! </P> ! <P> ! Example: ! </P> ! <blockquote><pre> BrowserMatch ^BadRobot/0.9 go_away <Directory /docroot> order deny,allow *************** *** 131,151 **** </Directory> </pre></blockquote> See also <A HREF="#allowfromenv">allow from env</A> ! and <A HREF="#order">order</A>.<p><hr> ! <A name="order"><h2>order</h2></A> <!--%plaintext <?INDEX {\tt order} directive> --> <strong>Syntax:</strong> order <em>ordering</em><br> <strong>Default:</strong> <code>order deny,allow</code><br> <strong>Context:</strong> directory, .htaccess<br> <strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_access<p> ! The order directive controls the order in which <A HREF="#allow">allow</A> and <A HREF="#deny">deny</A> directives are evaluated. <em>Ordering</em> is one of <dl> <dt>deny,allow <dd>the deny directives are evaluated before the allow directives. (The --- 161,187 ---- </Directory> </pre></blockquote> + <P> See also <A HREF="#allowfromenv">allow from env</A> ! and <A HREF="#order">order</A>. ! </p> ! <hr> ! <h2><A name="order">order directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt order} directive> --> <strong>Syntax:</strong> order <em>ordering</em><br> <strong>Default:</strong> <code>order deny,allow</code><br> <strong>Context:</strong> directory, .htaccess<br> <strong>Override:</strong> Limit<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_access ! </p> ! <P> The order directive controls the order in which <A HREF="#allow">allow</A> and <A HREF="#deny">deny</A> directives are evaluated. <em>Ordering</em> is one of + </P> <dl> <dt>deny,allow <dd>the deny directives are evaluated before the allow directives. (The *************** *** 157,176 **** <dd>Only those hosts which appear on the allow list and do not appear on the deny list are granted access. (The initial state is irrelevant.) </dl> ! Note that in all cases every <code>allow</code> and <code>deny</code> statement is evaluated, there is no "short-circuiting". ! ! <p>Example: <blockquote><code> order deny,allow<br> deny from all<br> allow from .ncsa.uiuc.edu<br> </code></blockquote> Hosts in the ncsa.uiuc.edu domain are allowed access; all other hosts are denied access. ! <!--#include virtual="footer.html" --> </BODY> </HTML> - --- 193,214 ---- <dd>Only those hosts which appear on the allow list and do not appear on the deny list are granted access. (The initial state is irrelevant.) </dl> ! <P> Note that in all cases every <code>allow</code> and <code>deny</code> statement is evaluated, there is no "short-circuiting". ! </P> ! <p> ! Example: ! </P> <blockquote><code> order deny,allow<br> deny from all<br> allow from .ncsa.uiuc.edu<br> </code></blockquote> + <P> Hosts in the ncsa.uiuc.edu domain are allowed access; all other hosts are denied access. ! </P> <!--#include virtual="footer.html" --> </BODY> </HTML> 1.5 +25 -19 apache/htdocs/manual/mod/mod_actions.html Index: mod_actions.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_actions.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** mod_actions.html 1997/06/04 16:14:14 1.4 --- mod_actions.html 1997/07/06 17:19:15 1.5 *************** *** 14,31 **** > <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Module mod_actions</h1> ! This module is contained in the <code>mod_actions.c</code> file, and is compiled in by default. It provides for executing CGI scripts based on media type or request method. It is not present in versions prior to Apache 1.1. ! <h2>Summary</h2> ! This module lets you run CGI scripts whenever a file of a certain type is requested. This makes it much easier to execute scripts that process files. ! <h2>Directives</h2> <ul> <li><A HREF="#action">Action</A> --- 14,31 ---- > <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Module mod_actions</h1> ! <P> This module is contained in the <code>mod_actions.c</code> file, and is compiled in by default. It provides for executing CGI scripts based on media type or request method. It is not present in versions prior to Apache 1.1. ! </P> <h2>Summary</h2> ! <P> This module lets you run CGI scripts whenever a file of a certain type is requested. This makes it much easier to execute scripts that process files. ! </P> <h2>Directives</h2> <ul> <li><A HREF="#action">Action</A> *************** *** 34,85 **** <hr> ! <A name="action"><h2>Action</h2></A> <strong>Syntax:</strong> Action <em>mime-type cgi-script</em><br> <strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Override:</strong> FileInfo<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_actions<br> <strong>Compatibility:</strong> Action is only available in Apache 1.1 ! and later<p> ! This directive adds an action, which will activate <em>cgi-script</em> when a file of content type <em>mime-type</em> is requested. It sends the URL and file path of the requested document using the standard CGI PATH_INFO and PATH_TRANSLATED environment variables. ! <hr> ! <A name="script"><h2>Script</h2></A> <strong>Syntax:</strong> Script <em>method cgi-script</em><br> <strong>Context:</strong> server config, virtual host, directory<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_actions<br> <strong>Compatibility:</strong> Script is only available in Apache 1.1 ! and later<p> ! <p>This directive adds an action, which will activate <em>cgi-script</em> when a file is requested using the method of <em>method</em>, which can be one of <code>GET</code>, <code>POST</code>, <code>PUT</code> or <code>DELETE</code>. It sends the URL and file path of the requested document using the standard ! CGI PATH_INFO and PATH_TRANSLATED environment variables. ! ! <p>Note that the Script command defines default actions only. If a CGI script is called, or some other resource that is capable of handling ! the requested method internally, it will do so. Also note that script with a method of <code>GET</code> will only be called if there are query arguments present (e.g. foo.html?hi). Otherwise, the request will proceed normally. ! ! <p>Examples: <pre> Script GET /cgi-bin/search #e.g. for <ISINDEX>-style searching Script PUT /~bob/put.cgi - </pre> <!--#include virtual="footer.html" --> </BODY> </HTML> - --- 34,91 ---- <hr> ! <h2><A name="action">Action directive</A></h2> ! <P> <strong>Syntax:</strong> Action <em>mime-type cgi-script</em><br> <strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Override:</strong> FileInfo<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_actions<br> <strong>Compatibility:</strong> Action is only available in Apache 1.1 ! and later ! </p> ! <P> This directive adds an action, which will activate <em>cgi-script</em> when a file of content type <em>mime-type</em> is requested. It sends the URL and file path of the requested document using the standard CGI PATH_INFO and PATH_TRANSLATED environment variables. ! </P> <hr> ! <h2><A name="script">Script directive</A></h2> ! <P> <strong>Syntax:</strong> Script <em>method cgi-script</em><br> <strong>Context:</strong> server config, virtual host, directory<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_actions<br> <strong>Compatibility:</strong> Script is only available in Apache 1.1 ! and later ! </p> ! <p> ! This directive adds an action, which will activate <em>cgi-script</em> when a file is requested using the method of <em>method</em>, which can be one of <code>GET</code>, <code>POST</code>, <code>PUT</code> or <code>DELETE</code>. It sends the URL and file path of the requested document using the standard ! CGI PATH_INFO and PATH_TRANSLATED environment variables. ! </P> ! <p> ! Note that the Script command defines default actions only. If a CGI script is called, or some other resource that is capable of handling ! the requested method internally, it will do so. Also note that Script with a method of <code>GET</code> will only be called if there are query arguments present (e.g. foo.html?hi). Otherwise, the request will proceed normally. ! </P> ! <p> ! Examples: ! </P> <pre> Script GET /cgi-bin/search #e.g. for <ISINDEX>-style searching Script PUT /~bob/put.cgi </pre> <!--#include virtual="footer.html" --> </BODY> </HTML> 1.11 +84 -43 apache/htdocs/manual/mod/mod_alias.html Index: mod_alias.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_alias.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** mod_alias.html 1997/06/04 16:14:15 1.10 --- mod_alias.html 1997/07/06 17:19:15 1.11 *************** *** 15,146 **** <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Module mod_alias</h1> ! This module is contained in the <code>mod_alias.c</code> file, and is compiled in by default. It provides for mapping different parts of the host filesystem in the the document tree, and for URL redirection. ! ! <menu> <li><A HREF="#alias">Alias</A> <li><A HREF="#redirect">Redirect</A> <li><A HREF="#redirecttemp">RedirectTemp</A> <li><A HREF="#redirectperm">RedirectPermanent</A> <li><A HREF="#scriptalias">ScriptAlias</A> ! </menu> <hr> ! <A name="alias"><h2>Alias</h2></A> <!--%plaintext <?INDEX {\tt Alias} directive> --> <strong>Syntax:</strong> Alias <em>url-path directory-filename</em><br> <Strong>Context:</strong> server config, virtual host<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_alias<br> ! The Alias directive allows documents to be stored in the local filesystem other than under the <A HREF="core.html#documentroot">DocumentRoot</A>. URLs with a (%-decoded) path beginning with <em>url-path</em> will be mapped to local files beginning with <em>directory-filename</em>. Example: <blockquote><code>Alias /image /ftp/pub/image</code></blockquote> A request for http://myserver/image/foo.gif would cause the server to ! return the file /ftp/pub/image/foo.gif.<p> ! Note that if you include a trailing / on the <em>url-path</em> then the server will require a trailing / in order to expand the alias. That is, if you use <code>Alias /icons/ /usr/local/etc/httpd/icons/</code> then ! the url <code>/icons</code> will not be aliased.<p> ! ! See also <A HREF="#scriptalias">ScriptAlias</A>.<p><hr> ! <A name="redirect"><h2>Redirect</h2></A> <!--%plaintext <?INDEX {\tt Redirect} directive> --> <strong>Syntax:</strong> Redirect [ <em>status</em> ] <em>url-path url</em><br> <Strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_alias<br> <strong>Compatibility:</strong> The directory and .htaccess context's ! are only available in versions 1.1 and later. The <em>status</em> argument is only available in Apache 1.2 or later.<p> ! The Redirect directive maps an old URL into a new one. The new URL is returned to the client which attempts to fetch it again with the new address. <em>Url-path</em> a (%-decoded) path; any requests for documents beginning with this path will be returned a redirect error to a new (%-encoded) url ! beginning with <em>url</em>. Example: <blockquote><code>Redirect /service http://foo2.bar.com/service</code></blockquote> If the client requests http://myserver/service/foo.txt, it will be told to ! access http://foo2.bar.com/service/foo.txt instead.<p> ! ! Note: Redirect directives take precedence over Alias and ScriptAlias directives, irrespective of their ordering in the configuration file. Also, ! <em>Url-path</em> must be an absolute path, not a relative path, even when used with ! .htaccess files or inside of <Directory> sections.<p> ! If no <em>status</em> argument is given, the redirect will be ! "temporary" (HTTP status 302). This indicates to the client that the resources is has moved temporarily. The <em>status</em> argument can be used to return other HTTP status codes: <dl> ! <dt>permanent<dd>Returns a permanent redirect status (301) indicating that the resource has moved permanently. ! <dt>temp<dd>Returns a temporary redirect status (302). This is the default. ! <dt>seeother<dd>Returns a "See Other" status (303) indicating that the resource has been replaced. ! <dt>gone<dd>Returns a "Gone" status (410) indicating that the resource has been permanently removed. When this status is used the <em>url</em> argument should be omitted. </dl> ! Other status codes can be returned by giving the numeric status code as the value of <em>status</em>. If the status is between 300 and 399, the <em>url</em> argument must be present, otherwise it must be omitted. Note that the status must be known to the Apache code (see the function <code>send_error_response</code> in http_protocol.c). ! <A name="redirecttemp"><h2>RedirectTemp</h2></A> <!--%plaintext <?INDEX {\tt Redirect} directive> --> <strong>Syntax:</strong> RedirectTemp <em>url-path url</em><br> <Strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_alias<br> ! <strong>Compatibility:</strong> This directive is only available in 1.2<P> ! This directive makes the client know that the Redirect is only ! temporary. (Status 302). Exactly equivalent to <code>Redirect temporary </code><P> ! <A name="redirectperm"><h2>RedirectPermanent</h2></A> <!--%plaintext <?INDEX {\tt Redirect} directive> --> <strong>Syntax:</strong> RedirectPermanent <em>url-path url</em><br> <Strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_alias<br> ! <strong>Compatibility:</strong> This directive is only available in 1.2<P> ! ! This directive makes the client know that the Redirect is permanent. ! (Status 301). Exactly equivalent to <code>Redirect permanent</code><P> ! <hr> ! <A name="scriptalias"><h2>ScriptAlias</h2></A> <!--%plaintext <?INDEX {\tt ScriptAlias} directive> --> <strong>Syntax:</strong> ScriptAlias <em>url-path directory-filename</em><br> <Strong>Context:</strong> server config, virtual host<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_alias<br> ! The ScriptAlias directive has the same behavior as the <A HREF="#alias">Alias</A> directive, except that in addition it marks the target directory as containing CGI scripts. URLs with a (%-decoded) path beginning with <em>url-path</em> will be mapped to scripts beginning with <em>directory-filename</em>. Example: <blockquote><code>ScriptAlias /cgi-bin/ /web/cgi-bin/</code></blockquote> A request for http://myserver/cgi-bin/foo would cause the server to ! run the script /web/cgi-bin/foo.<p> <!--#include virtual="footer.html" --> </BODY> </HTML> - --- 15,187 ---- <!--#include virtual="header.html" --> <H1 ALIGN="CENTER">Module mod_alias</h1> ! <P> This module is contained in the <code>mod_alias.c</code> file, and is compiled in by default. It provides for mapping different parts of the host filesystem in the the document tree, and for URL redirection. + </P> ! <H2>Directives</H2> ! <UL> <li><A HREF="#alias">Alias</A> <li><A HREF="#redirect">Redirect</A> <li><A HREF="#redirecttemp">RedirectTemp</A> <li><A HREF="#redirectperm">RedirectPermanent</A> <li><A HREF="#scriptalias">ScriptAlias</A> ! </UL> <hr> ! <h2><A name="alias">Alias directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt Alias} directive> --> <strong>Syntax:</strong> Alias <em>url-path directory-filename</em><br> <Strong>Context:</strong> server config, virtual host<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_alias ! </P> ! <P> The Alias directive allows documents to be stored in the local filesystem other than under the <A HREF="core.html#documentroot">DocumentRoot</A>. URLs with a (%-decoded) path beginning with <em>url-path</em> will be mapped to local files beginning with <em>directory-filename</em>. + <P> Example: + </P> <blockquote><code>Alias /image /ftp/pub/image</code></blockquote> + <P> A request for http://myserver/image/foo.gif would cause the server to ! return the file /ftp/pub/image/foo.gif. ! </p> ! <P> Note that if you include a trailing / on the <em>url-path</em> then the server will require a trailing / in order to expand the alias. That is, if you use <code>Alias /icons/ /usr/local/etc/httpd/icons/</code> then ! the url <code>/icons</code> will not be aliased. ! </p> ! <P> ! See also <A HREF="#scriptalias">ScriptAlias</A>. ! </p> ! <hr> ! <h2><A name="redirect">Redirect directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt Redirect} directive> --> <strong>Syntax:</strong> Redirect [ <em>status</em> ] <em>url-path url</em><br> <Strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_alias<br> <strong>Compatibility:</strong> The directory and .htaccess context's ! are only available in versions 1.1 and later. The <em>status</em> ! argument is only available in Apache 1.2 or later. ! </P> ! <P> The Redirect directive maps an old URL into a new one. The new URL is returned to the client which attempts to fetch it again with the new address. <em>Url-path</em> a (%-decoded) path; any requests for documents beginning with this path will be returned a redirect error to a new (%-encoded) url ! beginning with <em>url</em>. ! </P> ! <P> ! Example: ! </P> <blockquote><code>Redirect /service http://foo2.bar.com/service</code></blockquote> + <P> If the client requests http://myserver/service/foo.txt, it will be told to ! access http://foo2.bar.com/service/foo.txt instead. ! </p> ! <P> ! <STRONG>Note:</STRONG> Redirect directives take precedence over Alias ! and ScriptAlias directives, irrespective of their ordering in the configuration file. Also, ! <em>Url-path</em> must be an absolute path, not a relative path, even ! when used with .htaccess files or inside of <Directory> sections. ! </p> ! <P> If no <em>status</em> argument is given, the redirect will be ! "temporary" (HTTP status 302). This indicates to the client that the resources is has moved temporarily. The <em>status</em> argument can be used to return other HTTP status codes: + <P> <dl> ! <dt>permanent ! <dd>Returns a permanent redirect status (301) indicating that the resource has moved permanently. ! <dt>temp ! <dd>Returns a temporary redirect status (302). This is the default. ! <dt>seeother ! <dd>Returns a "See Other" status (303) indicating that the resource has been replaced. ! <dt>gone ! <dd>Returns a "Gone" status (410) indicating that the resource has been permanently removed. When this status is used the <em>url</em> argument should be omitted. </dl> ! <P> Other status codes can be returned by giving the numeric status code as the value of <em>status</em>. If the status is between 300 and 399, the <em>url</em> argument must be present, otherwise it must be omitted. Note that the status must be known to the Apache code (see the function <code>send_error_response</code> in http_protocol.c). + </P> + <HR> ! <h2><A name="redirecttemp">RedirectTemp directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt Redirect} directive> --> <strong>Syntax:</strong> RedirectTemp <em>url-path url</em><br> <Strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_alias<br> ! <strong>Compatibility:</strong> This directive is only available in 1.2 ! </P> ! <P> This directive makes the client know that the Redirect is only ! temporary (status 302). Exactly equivalent to <code>Redirect ! temporary</code>. ! </P> ! <HR> ! <h2><A name="redirectperm">RedirectPermanent directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt Redirect} directive> --> <strong>Syntax:</strong> RedirectPermanent <em>url-path url</em><br> <Strong>Context:</strong> server config, virtual host, directory, .htaccess<br> <strong>Status:</strong> Base<br> <strong>Module:</strong> mod_alias<br> ! <strong>Compatibility:</strong> This directive is only available in 1.2 ! </P> ! <P> ! This directive makes the client know that the Redirect is permanent ! (status 301). Exactly equivalent to <code>Redirect permanent</code>. ! </P> <hr> ! ! <h2><A name="scriptalias">ScriptAlias directive</A></h2> ! <P> <!--%plaintext <?INDEX {\tt ScriptAlias} directive> --> <strong>Syntax:</strong> ScriptAlias <em>url-path directory-filename</em><br> <Strong>Context:</strong> server config, virtual host<br> <strong>Status:</strong> Base<br> ! <strong>Module:</strong> mod_alias ! </P> ! <P> The ScriptAlias directive has the same behavior as the <A HREF="#alias">Alias</A> directive, except that in addition it marks the target directory as containing CGI scripts. URLs with a (%-decoded) path beginning with <em>url-path</em> will be mapped to scripts beginning with <em>directory-filename</em>. + <P> Example: + </P> <blockquote><code>ScriptAlias /cgi-bin/ /web/cgi-bin/</code></blockquote> + <P> A request for http://myserver/cgi-bin/foo would cause the server to ! run the script /web/cgi-bin/foo. ! </P> <!--#include virtual="footer.html" --> </BODY> </HTML> 1.10 +17 -12 apache/htdocs/manual/mod/mod_auth_anon.html Index: mod_auth_anon.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_auth_anon.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** mod_auth_anon.html 1997/06/24 18:39:37 1.9 --- mod_auth_anon.html 1997/07/06 17:19:15 1.10 *************** *** 52,58 **** <hr> ! <A name="anonymous"><h2>Anonymous</h2></a> <!--%plaintext <?INDEX {\tt Anonymous} directive> --> <strong>Syntax:</strong> Anonymous <em>user user ...</em><br> <strong>Default:</strong> none<br> --- 52,58 ---- <hr> ! <h2><A name="anonymous">Anonymous directive</A></h2> <!--%plaintext <?INDEX {\tt Anonymous} directive> --> <strong>Syntax:</strong> Anonymous <em>user user ...</em><br> <strong>Default:</strong> none<br> *************** *** 80,86 **** 'I Don't Know'. <HR> ! <A name="Authoritative"><h2>Anonymous_Authoritative</h2></A> <strong>Syntax:</strong> Anonymous_Authoritative <em>on | off</em><br> <strong>Default:</strong> <code>Anonymous_Authoritative off</code><br> <strong>Context:</strong> directory, .htaccess<br> --- 80,86 ---- 'I Don't Know'. <HR> ! <h2><A name="Authoritative">Anonymous_Authoritative directive</A></h2> <strong>Syntax:</strong> Anonymous_Authoritative <em>on | off</em><br> <strong>Default:</strong> <code>Anonymous_Authoritative off</code><br> <strong>Context:</strong> directory, .htaccess<br> *************** *** 93,105 **** userID does not match the values specified in the <code>Anonymous</code> directive, access is denied. <p> ! Be sure you know what you are doing when you decide to switch it on. And remember that it is the linking order of the modules (in the Configuration / Make file) which details the order in which the Authorization modules are queried. <hr> ! <A name="LogEmail"><h2>Anonymous_LogEmail</h2></A> <strong>Syntax:</strong> Anonymous_LogEmail <em>on | off</em><br> <strong>Default:</strong> <code>off</code><br> <strong>Context:</strong> directory, .htaccess<br> --- 93,105 ---- userID does not match the values specified in the <code>Anonymous</code> directive, access is denied. <p> ! Be sure you know what you are doing when you decide to switch it on. And remember that it is the linking order of the modules (in the Configuration / Make file) which details the order in which the Authorization modules are queried. <hr> ! <h2><A name="LogEmail">Anonymous_LogEmail directive</A></h2> <strong>Syntax:</strong> Anonymous_LogEmail <em>on | off</em><br> <strong>Default:</strong> <code>off</code><br> <strong>Context:</strong> directory, .htaccess<br> *************** *** 111,117 **** contains a sensible email address) is logged in the httpd-log file. <hr> ! <A name="MustGiveEmail"><h2>Anonymous_MustGiveEmail</h2></a> <!--%plaintext <?INDEX {\tt Anonymous_MustGiveEmail} directive> --> <strong>Syntax:</strong> Anonymous_MustGiveEmail <em>on</em> | <em>off</em><br> <strong>Default:</strong> off<br> --- 111,117 ---- contains a sensible email address) is logged in the httpd-log file. <hr> ! <h2><A name="MustGiveEmail">Anonymous_MustGiveEmail directive</A></h2> <!--%plaintext <?INDEX {\tt Anonymous_MustGiveEmail} directive> --> <strong>Syntax:</strong> Anonymous_MustGiveEmail <em>on</em> | <em>off</em><br> <strong>Default:</strong> off<br> *************** *** 124,130 **** address as the password. This prohibits blank passwords. <HR> ! <A name="NoUserID"><h2>Anonymous_NoUserID</h2></A> <strong>Syntax:</strong> Anonymous_NoUserID <em>on | off</em><br> <strong>Default:</strong> <code>Anonymous_NoUserID off</code><br> <strong>Context:</strong> directory, .htaccess<br> --- 124,130 ---- address as the password. This prohibits blank passwords. <HR> ! <h2><A name="NoUserID">Anonymous_NoUserID directive</A></h2> <strong>Syntax:</strong> Anonymous_NoUserID <em>on | off</em><br> <strong>Default:</strong> <code>Anonymous_NoUserID off</code><br> <strong>Context:</strong> directory, .htaccess<br> *************** *** 140,146 **** <hr> ! <A name="VerifyEmail"><h2>Anonymous_VerifyEmail</h2></A> <strong>Syntax:</strong> Anonymous <em>on | off</em><br> <strong>Default:</strong> <code>Anonymous_VerifyEmail off</code><br> <strong>Context:</strong> directory, .htaccess<br> --- 140,146 ---- <hr> ! <h2><A name="VerifyEmail">Anonymous_VerifyEmail directive</A></h2> <strong>Syntax:</strong> Anonymous <em>on | off</em><br> <strong>Default:</strong> <code>Anonymous_VerifyEmail off</code><br> <strong>Context:</strong> directory, .htaccess<br> *************** *** 152,158 **** checked for at least one '@' and a '.' to encourage users to enter valid email addresses (see the above <code>Auth_LogEmail</code>). ! <hr><a name="Example"><h2>Example</h2></a> The example below (when combined with the Auth directives of a htpasswd-file based (or GDM, mSQL etc) base access --- 152,159 ---- checked for at least one '@' and a '.' to encourage users to enter valid email addresses (see the above <code>Auth_LogEmail</code>). ! <hr> ! <h2><a name="Example">Example</A></h2> The example below (when combined with the Auth directives of a htpasswd-file based (or GDM, mSQL etc) base access *************** *** 202,212 **** </dl> ! <hr><h2><a name="CompileTimeOptions">Compile Time Options</a></h2> Currently there are no Compile options. ! <hr><h2><a name="RevisionHistory">Revision History</a></h2> This version: 23 Nov 1995, 24 Feb 1996, 16 May 1996. --- 203,215 ---- </dl> ! <hr> ! <h2><a name="CompileTimeOptions">Compile Time Options</a></h2> Currently there are no Compile options. ! <hr> ! <h2><a name="RevisionHistory">Revision History</a></h2> This version: 23 Nov 1995, 24 Feb 1996, 16 May 1996. *************** *** 223,229 **** </dl> ! <hr><h2><a name="Person">Contact/person to blame</a></h2> This module was written for the <a href="http://ewse.ceo.org">European Wide Service Exchange</a> by --- 226,233 ---- </dl> ! <hr> ! <h2><a name="Person">Contact/person to blame</a></h2> This module was written for the <a href="http://ewse.ceo.org">European Wide Service Exchange</a> by *************** *** 234,240 **** <p> ! <hr><h2><a NAME="Sourcecode">Sourcecode</a></h2> The source code can be found at <a href="http://www.apache.org"><code> http://www.apache.org</code></a>. A snapshot of a development version --- 238,245 ---- <p> ! <hr> ! <h2><a NAME="Sourcecode">Sourcecode</a></h2> The source code can be found at <a href="http://www.apache.org"><code> http://www.apache.org</code></a>. A snapshot of a development version 1.11 +1 -1 apache/htdocs/manual/mod/mod_auth_dbm.html Index: mod_auth_dbm.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_auth_dbm.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** mod_auth_dbm.html 1997/06/04 16:14:17 1.10 --- mod_auth_dbm.html 1997/07/06 17:19:16 1.11 *************** *** 18,24 **** This module is contained in the <code>mod_auth_dbm.c</code> file, and is not compiled in by default. It provides for user authentication using ! DBM files. <menu> --- 18,24 ---- This module is contained in the <code>mod_auth_dbm.c</code> file, and is not compiled in by default. It provides for user authentication using ! DBM files. <menu> 1.7 +2 -2 apache/htdocs/manual/mod/mod_cern_meta.html Index: mod_cern_meta.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_cern_meta.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** mod_cern_meta.html 1997/06/04 16:14:18 1.6 --- mod_cern_meta.html 1997/07/06 17:19:16 1.7 *************** *** 21,34 **** <h2>Summary</h2> ! Emulate the CERN HTTPD Meta file semantics. Meta files are HTTP headers that can be output in addition to the normal range of headers for each file accessed. They appear rather like the Apache .asis files, and are able to provide a crude way of influencing the Expires: header, as well as providing other curiosities. There are many ways to manage meta information, this one was chosen because there is already a large number of CERN users ! who can exploit this module. <p>More information on the <a href="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir --- 21,34 ---- <h2>Summary</h2> ! Emulate the CERN HTTPD Meta file semantics. Meta files are HTTP headers that can be output in addition to the normal range of headers for each file accessed. They appear rather like the Apache .asis files, and are able to provide a crude way of influencing the Expires: header, as well as providing other curiosities. There are many ways to manage meta information, this one was chosen because there is already a large number of CERN users ! who can exploit this module. <p>More information on the <a href="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir 1.8 +1 -1 apache/htdocs/manual/mod/mod_dir.html Index: mod_dir.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_dir.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** mod_dir.html 1997/06/24 16:36:56 1.7 --- mod_dir.html 1997/07/06 17:19:16 1.8 *************** *** 160,166 **** format (<em>alttext</em>,<em>url</em>) where <em>alttext</em> is the text tag given for an icon for non-graphical browsers.<p> ! <em>Mime-encoding</em> is a wildcard expression matching required the content-encoding. Examples: <blockquote><code> AddIconByEncoding /icons/compress.xbm x-compress --- 160,166 ---- format (<em>alttext</em>,<em>url</em>) where <em>alttext</em> is the text tag given for an icon for non-graphical browsers.<p> ! <em>Mime-encoding</em> is a wildcard expression matching required the content-encoding. Examples: <blockquote><code> AddIconByEncoding /icons/compress.xbm x-compress 1.7 +1 -1 apache/htdocs/manual/mod/mod_env.html Index: mod_env.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_env.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** mod_env.html 1997/06/04 16:14:20 1.6 --- mod_env.html 1997/07/06 17:19:16 1.7 *************** *** 27,33 **** CERN web-servers are able to do this, so this module is especially useful to web-admins who wish to migrate from CERN to Apache without rewriting all their scripts ! <h2>Directives</h2> <ul> <li><A HREF="#passenv">PassEnv</A> --- 27,33 ---- CERN web-servers are able to do this, so this module is especially useful to web-admins who wish to migrate from CERN to Apache without rewriting all their scripts ! <h2>Directives</h2> <ul> <li><A HREF="#passenv">PassEnv</A> 1.7 +7 -7 apache/htdocs/manual/mod/mod_imap.html Index: mod_imap.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_imap.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** mod_imap.html 1997/06/04 16:14:21 1.6 --- mod_imap.html 1997/07/06 17:19:17 1.7 *************** *** 77,83 **** <dt><code>none</code> <dd>If ImapMenu is <code>none</code>, no menu is generated, and the <code>default</code> ! action is performed. <dt><code>formatted</code> <dd>A <code>formatted</code> menu is the simplest menu. Comments in the imagemap file are ignored. A level one header is --- 77,83 ---- <dt><code>none</code> <dd>If ImapMenu is <code>none</code>, no menu is generated, and the <code>default</code> ! action is performed. <dt><code>formatted</code> <dd>A <code>formatted</code> menu is the simplest menu. Comments in the imagemap file are ignored. A level one header is *************** *** 153,160 **** <h3>Imagemap File Directives</h3> There are six directives allowed in the imagemap file. The directives can come in any order, but are processed in the order they are found ! in the imagemap file. ! <dl> <dt><code>base</code> Directive <dd>Has the effect of <code><BASE href="value"></code>. The non-absolute URLs of the map-file are taken relative to this value. --- 153,160 ---- <h3>Imagemap File Directives</h3> There are six directives allowed in the imagemap file. The directives can come in any order, but are processed in the order they are found ! in the imagemap file. ! <dl> <dt><code>base</code> Directive <dd>Has the effect of <code><BASE href="value"></code>. The non-absolute URLs of the map-file are taken relative to this value. *************** *** 217,223 **** <dt><code>referer</code> <dd>Equivalent to the URL of the referring document. Defaults to <code>http://servername/</code> if no Referer: ! header was present. <p> <dt><code>nocontent</code> <dd>Sends a status code of <code>204 No Content</code>, --- 217,223 ---- <dt><code>referer</code> <dd>Equivalent to the URL of the referring document. Defaults to <code>http://servername/</code> if no Referer: ! header was present. <p> <dt><code>nocontent</code> <dd>Sends a status code of <code>204 No Content</code>, *************** *** 227,233 **** <dt><code>error</code> <dd>Fails with a <code>500 Server Error</code>. Valid for all but <code>base</code>, but sort of silly for anything but ! <code>default</code>. </dl> <h3>Coordinates</h3> --- 227,233 ---- <dt><code>error</code> <dd>Fails with a <code>500 Server Error</code>. Valid for all but <code>base</code>, but sort of silly for anything but ! <code>default</code>. </dl> <h3>Coordinates</h3> *************** *** 237,249 **** separated by a comma. The coordinates are separated from each other by whitespace. To accommodate the way Lynx handles imagemaps, should a user select the coordinate <code>0,0</code>, it is as if ! no coordinate had been selected. </dl> <h3>Quoted Text</h3> <dl> <dt><code>"Menu Text"</code> ! <dd>After the value or after the coordinates, the line optionally may contain text within double quotes. This string is used as the text for the link if a menu is generated:<br> <code><a href="http://foo.com/">Menu text</a></code><br> --- 237,249 ---- separated by a comma. The coordinates are separated from each other by whitespace. To accommodate the way Lynx handles imagemaps, should a user select the coordinate <code>0,0</code>, it is as if ! no coordinate had been selected. </dl> <h3>Quoted Text</h3> <dl> <dt><code>"Menu Text"</code> ! <dd>After the value or after the coordinates, the line optionally may contain text within double quotes. This string is used as the text for the link if a menu is generated:<br> <code><a href="http://foo.com/">Menu text</a></code><br> 1.15 +11 -11 apache/htdocs/manual/mod/mod_include.html Index: mod_include.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_include.html,v retrieving revision 1.14 retrieving revision 1.15 diff -C3 -r1.14 -r1.15 *** mod_include.html 1997/06/24 18:39:38 1.14 --- mod_include.html 1997/07/06 17:19:17 1.15 *************** *** 19,25 **** is compiled in by default. It provides for server-parsed html documents. Several directives beyond the original NCSA definition have been included in Apache 1.2 - these are flagged below with the phrase ! "Apache 1.2 and above". Of particular significance are the new flow control directives documented at the bottom. <H2>Enabling Server-Side Includes</H2> --- 19,25 ---- is compiled in by default. It provides for server-parsed html documents. Several directives beyond the original NCSA definition have been included in Apache 1.2 - these are flagged below with the phrase ! "Apache 1.2 and above". Of particular significance are the new flow control directives documented at the bottom. <H2>Enabling Server-Side Includes</H2> *************** *** 193,199 **** <dt>value <dd>The value to give a variable. </dl> ! For example: <CODE><!--#set var="category" value="help" --></CODE> <dd>Apache 1.2 and above. --- 193,199 ---- <dt>value <dd>The value to give a variable. </dl> ! For example: <CODE><!--#set var="category" value="help" --></CODE> <dd>Apache 1.2 and above. *************** *** 203,209 **** In addition to the variables in the standard CGI environment, these are available for the <code>echo</code> command, for <code>if</code> and ! <code>elif</code>, and to any program invoked by the document. <dl> <dt>DATE_GMT --- 203,209 ---- In addition to the variables in the standard CGI environment, these are available for the <code>echo</code> command, for <code>if</code> and ! <code>elif</code>, and to any program invoked by the document. <dl> <dt>DATE_GMT *************** *** 254,261 **** "<SAMP>X</SAMP>" and <SAMP>REQUEST_METHOD</SAMP> is "<SAMP>Y</SAMP>". ! <P> EXAMPLE: the below example will print "in foo" if the DOCUMENT_URI is ! /foo/file.html, "in bar" if it is /bar/file.html and "in neither" otherwise: <PRE> <!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" --> --- 254,261 ---- "<SAMP>X</SAMP>" and <SAMP>REQUEST_METHOD</SAMP> is "<SAMP>Y</SAMP>". ! <P> EXAMPLE: the below example will print "in foo" if the DOCUMENT_URI is ! /foo/file.html, "in bar" if it is /bar/file.html and "in neither" otherwise: <PRE> <!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" --> *************** *** 291,297 **** if the original test_condition was false. These elements are optional. ! <P> The <B><CODE>endif</CODE></B> element ends the <B><CODE>if</CODE></B> element and is required. <P> <I>test_condition</I> is one of the following: --- 291,297 ---- if the original test_condition was false. These elements are optional. ! <P> The <B><CODE>endif</CODE></B> element ends the <B><CODE>if</CODE></B> element and is required. <P> <I>test_condition</I> is one of the following: *************** *** 309,327 **** Unix egrep command. <DT>( <I>test_condition</I> ) ! <DD>true if <I>test_condition</I> is true <DT>! <I>test_condition</I> <DD>true if <I>test_condition</I> is false <DT><I>test_condition1</I> && <I>test_condition2</I> <DD>true if both <I>test_condition1</I> and ! <I>test_condition2</I> are true <DT><I>test_condition1</I> || <I>test_condition2</I> <DD>true if either <I>test_condition1</I> or ! <I>test_condition2</I> is true </DL> <P> "<I>=</I>" and "<I>!=</I>" bind more tightly than "<I>&&</I>" and ! "<I>||</I>". "<I>!</I>" binds most tightly. Thus, the following are equivalent: <PRE> --- 309,327 ---- Unix egrep command. <DT>( <I>test_condition</I> ) ! <DD>true if <I>test_condition</I> is true <DT>! <I>test_condition</I> <DD>true if <I>test_condition</I> is false <DT><I>test_condition1</I> && <I>test_condition2</I> <DD>true if both <I>test_condition1</I> and ! <I>test_condition2</I> are true <DT><I>test_condition1</I> || <I>test_condition2</I> <DD>true if either <I>test_condition1</I> or ! <I>test_condition2</I> is true </DL> <P> "<I>=</I>" and "<I>!=</I>" bind more tightly than "<I>&&</I>" and ! "<I>||</I>". "<I>!</I>" binds most tightly. Thus, the following are equivalent: <PRE> *************** *** 360,366 **** The XBitHack directives controls the parsing of ordinary html documents. This directive only affects files associated with the MIME type ! <CODE>text/html</CODE>. <em>Status</em> can have the following values: <dl> <dt>off --- 360,366 ---- The XBitHack directives controls the parsing of ordinary html documents. This directive only affects files associated with the MIME type ! <CODE>text/html</CODE>. <em>Status</em> can have the following values: <dl> <dt>off 1.7 +4 -4 apache/htdocs/manual/mod/mod_negotiation.html Index: mod_negotiation.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_negotiation.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** mod_negotiation.html 1997/06/04 16:14:23 1.6 --- mod_negotiation.html 1997/07/06 17:19:17 1.7 *************** *** 17,23 **** This module is contained in the <code>mod_negotiation.c</code> file, and is compiled in by default. It provides for <A ! HREF="../content-negotiation.html">content negotiation</A>. <h2>Summary</h2> Content negotiation, or more accurately content selection, is the --- 17,23 ---- This module is contained in the <code>mod_negotiation.c</code> file, and is compiled in by default. It provides for <A ! HREF="../content-negotiation.html">content negotiation</A>. <h2>Summary</h2> Content negotiation, or more accurately content selection, is the *************** *** 56,62 **** <dd>The length of the file, in bytes. If this header is not present, then the actual length of the file is used. <dt>Content-Type: ! <dd>The MIME media type of the document, with optional parameters. parameters are separated from the media type and from one another by semi-colons. Parameter syntax is name=value; allowed parameters are: <dl> --- 56,62 ---- <dd>The length of the file, in bytes. If this header is not present, then the actual length of the file is used. <dt>Content-Type: ! <dd>The MIME media type of the document, with optional parameters. parameters are separated from the media type and from one another by semi-colons. Parameter syntax is name=value; allowed parameters are: <dl> *************** *** 111,117 **** This directive only applies to requests which come from HTTP/1.0 browsers. HTTP/1.1 provides much better control over the caching of negotiated ! documents, and this directive has no effect in responses to HTTP/1.1 requests. --- 111,117 ---- This directive only applies to requests which come from HTTP/1.0 browsers. HTTP/1.1 provides much better control over the caching of negotiated ! documents, and this directive has no effect in responses to HTTP/1.1 requests. *************** *** 139,145 **** Note that this directive only has an effect if a 'best' language cannot be determined by other any other means. Correctly implemented ! HTTP/1.1 requests will mean this directive has no effect. <!--#include virtual="footer.html" --> </BODY> --- 139,145 ---- Note that this directive only has an effect if a 'best' language cannot be determined by other any other means. Correctly implemented ! HTTP/1.1 requests will mean this directive has no effect. <!--#include virtual="footer.html" --> </BODY> 1.25 +2 -2 apache/htdocs/manual/mod/mod_proxy.html Index: mod_proxy.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_proxy.html,v retrieving revision 1.24 retrieving revision 1.25 diff -C3 -r1.24 -r1.25 *** mod_proxy.html 1997/06/30 21:42:28 1.24 --- mod_proxy.html 1997/07/06 17:19:18 1.25 *************** *** 28,34 **** <h2>Summary</h2> This module implements a proxy/cache for Apache. It implements ! proxying capability for <code>FTP</code>, <code>CONNECT</code> (for SSL), <code>HTTP/0.9</code>, and --- 28,34 ---- <h2>Summary</h2> This module implements a proxy/cache for Apache. It implements ! proxying capability for <code>FTP</code>, <code>CONNECT</code> (for SSL), <code>HTTP/0.9</code>, and *************** *** 347,353 **** <h2><a name="socks">Can I use the Apache proxy module with my SOCKS proxy?</a></h2> Yes. Just build Apache with the rule <code>SOCKS4=yes</code> in your ! <i>Configuration</i> file, and follow the instructions there. SOCKS5 capability can be added in a similar way (there's no <code>SOCKS5</code> rule yet), so use the <code>EXTRA_LDFLAGS</code> definition, or build Apache normally and run it with the <i>runsocks</i> wrapper provided with SOCKS5, --- 347,353 ---- <h2><a name="socks">Can I use the Apache proxy module with my SOCKS proxy?</a></h2> Yes. Just build Apache with the rule <code>SOCKS4=yes</code> in your ! <i>Configuration</i> file, and follow the instructions there. SOCKS5 capability can be added in a similar way (there's no <code>SOCKS5</code> rule yet), so use the <code>EXTRA_LDFLAGS</code> definition, or build Apache normally and run it with the <i>runsocks</i> wrapper provided with SOCKS5, 1.12 +23 -23 apache/htdocs/manual/mod/mod_rewrite.html Index: mod_rewrite.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_rewrite.html,v retrieving revision 1.11 retrieving revision 1.12 diff -C3 -r1.11 -r1.12 *** mod_rewrite.html 1997/07/02 03:09:23 1.11 --- mod_rewrite.html 1997/07/06 17:19:18 1.12 *************** *** 31,37 **** <h2>Summary</h2> This module uses a rule-based rewriting engine (based on a ! regular-expression parser) to rewrite requested URLs on the fly. <p> It supports an unlimited number of additional rule conditions (which can --- 31,37 ---- <h2>Summary</h2> This module uses a rule-based rewriting engine (based on a ! regular-expression parser) to rewrite requested URLs on the fly. <p> It supports an unlimited number of additional rule conditions (which can *************** *** 58,64 **** <blockquote> <i>Ralf S. Engelschall</i><br> <a href="mailto:[EMAIL PROTECTED]"><tt>[EMAIL PROTECTED]</tt></a><br> ! <a href="http://www.engelschall.com/"><tt>www.engelschall.com</tt></a> </blockquote> <!--%hypertext --> --- 58,64 ---- <blockquote> <i>Ralf S. Engelschall</i><br> <a href="mailto:[EMAIL PROTECTED]"><tt>[EMAIL PROTECTED]</tt></a><br> ! <a href="http://www.engelschall.com/"><tt>www.engelschall.com</tt></a> </blockquote> <!--%hypertext --> *************** *** 99,105 **** The <tt>RewriteEngine</tt> directive enables or disables the runtime rewriting engine. If it is set to <code>off</code> this module does no runtime processing at all. It does not even update the <tt>SCRIPT_URx</tt> ! environment variables. <p> Use this directive to disable the module instead of commenting out --- 99,105 ---- The <tt>RewriteEngine</tt> directive enables or disables the runtime rewriting engine. If it is set to <code>off</code> this module does no runtime processing at all. It does not even update the <tt>SCRIPT_URx</tt> ! environment variables. <p> Use this directive to disable the module instead of commenting out *************** *** 143,149 **** server logs any rewriting actions it performs. If the name does not begin with a slash ('<tt>/</tt>') then it is assumed to be relative to the <em>Server Root</em>. The directive should occur only once per server ! config. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> --- 143,149 ---- server logs any rewriting actions it performs. If the name does not begin with a slash ('<tt>/</tt>') then it is assumed to be relative to the <em>Server Root</em>. The directive should occur only once per server ! config. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> *************** *** 272,278 **** # map.real-to-user -- maps realnames to usernames # ! Ralf.S.Engelschall rse # Bastard Operator From Hell Dr.Fred.Klabuster fred # Mr. DAU </pre></td></tr> </table> --- 272,278 ---- # map.real-to-user -- maps realnames to usernames # ! Ralf.S.Engelschall rse # Bastard Operator From Hell Dr.Fred.Klabuster fred # Mr. DAU </pre></td></tr> </table> *************** *** 317,323 **** #!/usr/bin/perl $| = 1; while (<STDIN>) { ! # ...here any transformations # or lookups should occur... print $_; } --- 317,323 ---- #!/usr/bin/perl $| = 1; while (<STDIN>) { ! # ...here any transformations # or lookups should occur... print $_; } *************** *** 342,348 **** mapping-function use one <tt>RewriteMap</tt> directive to declare its rewriting mapfile. While you cannot <b>declare</b> a map in per-directory context it is of course possible to <b>use</b> this map in per-directory ! context. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> --- 342,348 ---- mapping-function use one <tt>RewriteMap</tt> directive to declare its rewriting mapfile. While you cannot <b>declare</b> a map in per-directory context it is of course possible to <b>use</b> this map in per-directory ! context. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> *************** *** 380,386 **** prefix is the corresponding filepath itself. <b>But at most websites URLs are <b>NOT</b> directly related to physical filename paths, so this assumption will be usually be wrong!</b> There you have to use the <tt>RewriteBase</tt> ! directive to specify the correct URL-prefix. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> --- 380,386 ---- prefix is the corresponding filepath itself. <b>But at most websites URLs are <b>NOT</b> directly related to physical filename paths, so this assumption will be usually be wrong!</b> There you have to use the <tt>RewriteBase</tt> ! directive to specify the correct URL-prefix. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> *************** *** 409,415 **** RewriteEngine On ! # let the server know that we are reached via /xyz and not # via the physical path prefix /abc/def RewriteBase /xyz --- 409,415 ---- RewriteEngine On ! # let the server know that we are reached via /xyz and not # via the physical path prefix /abc/def RewriteBase /xyz *************** *** 420,426 **** <p> In the above example, a request to <tt>/xyz/oldstuff.html</tt> gets correctly ! rewritten to the physical file <tt>/abc/def/newstuff.html</tt>. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> --- 420,426 ---- <p> In the above example, a request to <tt>/xyz/oldstuff.html</tt> gets correctly ! rewritten to the physical file <tt>/abc/def/newstuff.html</tt>. <p> <table width="70%" border=2 bgcolor="#c0c0e0" cellspacing=0 cellpadding=10> *************** *** 450,456 **** when it occurs the (rewritten) request has to be re-injected into the Apache kernel! BUT: While this seems like a serious overhead, it really isn't, because this re-injection happens fully internal to the Apache server and the same ! procedure is used by many other operations inside Apache. So, you can be sure the design and implementation is correct. </font> </td></tr> --- 450,456 ---- when it occurs the (rewritten) request has to be re-injected into the Apache kernel! BUT: While this seems like a serious overhead, it really isn't, because this re-injection happens fully internal to the Apache server and the same ! procedure is used by many other operations inside Apache. So, you can be sure the design and implementation is correct. </font> </td></tr> *************** *** 480,486 **** <em>TestString</em> is a string which contains server-variables of the form <blockquote><strong> ! <tt>%{</tt> <em>NAME_OF_VARIABLE</em> <tt>}</tt> </strong></blockquote> where <em>NAME_OF_VARIABLE</em> can be a string --- 480,486 ---- <em>TestString</em> is a string which contains server-variables of the form <blockquote><strong> ! <tt>%{</tt> <em>NAME_OF_VARIABLE</em> <tt>}</tt> </strong></blockquote> where <em>NAME_OF_VARIABLE</em> can be a string *************** *** 606,612 **** <em>CondPattern</em> is the condition pattern, i.e. a regular expression which gets applied to the current instance of the <em>TestString</em>, i.e. <em>TestString</em> gets evaluated and then matched against ! <em>CondPattern</em>. <p> <b>Remember:</b> <em>CondPattern</em> is a standard --- 606,612 ---- <em>CondPattern</em> is the condition pattern, i.e. a regular expression which gets applied to the current instance of the <em>TestString</em>, i.e. <em>TestString</em> gets evaluated and then matched against ! <em>CondPattern</em>. <p> <b>Remember:</b> <em>CondPattern</em> is a standard *************** *** 678,684 **** <blockquote><pre> RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] ! RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule ...some special stuff for any of these hosts... </pre></blockquote> Without this flag you had to write down the cond/rule three times. --- 678,684 ---- <blockquote><pre> RewriteCond %{REMOTE_HOST} ^host1.* [OR] RewriteCond %{REMOTE_HOST} ^host2.* [OR] ! RewriteCond %{REMOTE_HOST} ^host3.* RewriteRule ...some special stuff for any of these hosts... </pre></blockquote> Without this flag you had to write down the cond/rule three times. *************** *** 745,758 **** <strong><code>^</code></strong> Start of line <strong><code>$</code></strong> End of line <strong><code>.</code></strong> Any single character ! <strong><code>[</code></strong>chars<strong><code>]</code></strong> One of chars ! <strong><code>[^</code></strong>chars<strong><code>]</code></strong> None of chars <strong><code>?</code></strong> 0 or 1 of the preceding char <strong><code>*</code></strong> 0 or N of the preceding char <strong><code>+</code></strong> 1 or N of the preceding char ! <strong><code>\</code></strong>char escape that specific char (e.g. for specifying the chars "<code>.[]()</code>" etc.) <strong><code>(</code></strong>string<strong><code>)</code></strong> Grouping of chars (the <b>N</b>th group can be used on the RHS with <code>$</code><b>N</b>) --- 745,758 ---- <strong><code>^</code></strong> Start of line <strong><code>$</code></strong> End of line <strong><code>.</code></strong> Any single character ! <strong><code>[</code></strong>chars<strong><code>]</code></strong> One of chars ! <strong><code>[^</code></strong>chars<strong><code>]</code></strong> None of chars <strong><code>?</code></strong> 0 or 1 of the preceding char <strong><code>*</code></strong> 0 or N of the preceding char <strong><code>+</code></strong> 1 or N of the preceding char ! <strong><code>\</code></strong>char escape that specific char (e.g. for specifying the chars "<code>.[]()</code>" etc.) <strong><code>(</code></strong>string<strong><code>)</code></strong> Grouping of chars (the <b>N</b>th group can be used on the RHS with <code>$</code><b>N</b>) *************** *** 782,788 **** <p> <a name="rhs"><em>Substitution</em></a> of a rewriting rule is the string which is substituted for (or replaces) the original URL for which ! <em>Pattern</em> matched. Beside plain text you can use <ol> <li>pattern-group back-references (<code>$N</code>) --- 782,788 ---- <p> <a name="rhs"><em>Substitution</em></a> of a rewriting rule is the string which is substituted for (or replaces) the original URL for which ! <em>Pattern</em> matched. Beside plain text you can use <ol> <li>pattern-group back-references (<code>$N</code>) *************** *** 842,855 **** <ul> <li>'<strong><code>redirect|R</code>[=<i>code</i>]</strong>' (force <a name="redirect"><b>r</b>edirect</a>)<br> ! Prefix <em>Substitution</em> with <code>http://thishost[:thisport]/</code> (which makes the new URL a URI) to force a external redirection. If no <i>code</i> is given a HTTP response of 302 (MOVED TEMPORARILY) is used. If you want to use other response codes in the range 300-400 just specify them as a number or use one of the following symbolic names: <tt>temp</tt> (default), <tt>permanent</tt>, <tt>seeother</tt>. ! Use it for rules which should canonicalize the URL and gives it back to the client, e.g. translate ``<code>/~</code>'' into ``<code>/u/</code>'' or always append a slash to <code>/u/</code><em>user</em>, etc.<br> --- 842,855 ---- <ul> <li>'<strong><code>redirect|R</code>[=<i>code</i>]</strong>' (force <a name="redirect"><b>r</b>edirect</a>)<br> ! Prefix <em>Substitution</em> with <code>http://thishost[:thisport]/</code> (which makes the new URL a URI) to force a external redirection. If no <i>code</i> is given a HTTP response of 302 (MOVED TEMPORARILY) is used. If you want to use other response codes in the range 300-400 just specify them as a number or use one of the following symbolic names: <tt>temp</tt> (default), <tt>permanent</tt>, <tt>seeother</tt>. ! Use it for rules which should canonicalize the URL and gives it back to the client, e.g. translate ``<code>/~</code>'' into ``<code>/u/</code>'' or always append a slash to <code>/u/</code><em>user</em>, etc.<br> *************** *** 902,908 **** from the last rewriting rule. This corresponds to the Perl <code>next</code> command or the <code>continue</code> command from the C language. Use this flag to restart the rewriting process, i.e. to ! immediately go to the top of the loop. <br> <b>But be careful not to create a deadloop!</b> <p> <li>'<strong><code>chain|C</code></strong>' (<b>c</b>hained with next rule)<br> --- 902,908 ---- from the last rewriting rule. This corresponds to the Perl <code>next</code> command or the <code>continue</code> command from the C language. Use this flag to restart the rewriting process, i.e. to ! immediately go to the top of the loop. <br> <b>But be careful not to create a deadloop!</b> <p> <li>'<strong><code>chain|C</code></strong>' (<b>c</b>hained with next rule)<br> *************** *** 948,954 **** with <tt>mod_alias</tt>: <pre> RewriteRule ^/abc(.*) /def$1 [PT] ! Alias /def /ghi </pre> If you omit the <tt>PT</tt> flag then <tt>mod_rewrite</tt> will do its job fine, i.e. it rewrites <tt>uri=/abc/...</tt> to --- 948,954 ---- with <tt>mod_alias</tt>: <pre> RewriteRule ^/abc(.*) /def$1 [PT] ! Alias /def /ghi </pre> If you omit the <tt>PT</tt> flag then <tt>mod_rewrite</tt> will do its job fine, i.e. it rewrites <tt>uri=/abc/...</tt> to *************** *** 990,996 **** <tt><!--#echo var="VAR"--></tt>) or CGI (e.g. <tt>$ENV{'VAR'}</tt>). But additionally you can also dereference it in a following RewriteCond pattern via <tt>%{ENV:VAR}</tt>. Use this to strip but remember ! information from URLs. </ul> <p> --- 990,996 ---- <tt><!--#echo var="VAR"--></tt>) or CGI (e.g. <tt>$ENV{'VAR'}</tt>). But additionally you can also dereference it in a following RewriteCond pattern via <tt>%{ENV:VAR}</tt>. Use this to strip but remember ! information from URLs. </ul> <p> 1.8 +4 -4 apache/htdocs/manual/mod/mod_status.html Index: mod_status.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_status.html,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** mod_status.html 1997/06/24 18:39:39 1.7 --- mod_status.html 1997/07/06 17:19:19 1.8 *************** *** 33,39 **** <li>A total number of accesses and byte count served (*) <li>The time the server was started/restarted and the time it has been running for ! <li>Averages giving the number of requests per second, the number of bytes served per second and the average number of bytes per request (*) <li>The current percentage CPU used by each child and in total by --- 33,39 ---- <li>A total number of accesses and byte count served (*) <li>The time the server was started/restarted and the time it has been running for ! <li>Averages giving the number of requests per second, the number of bytes served per second and the average number of bytes per request (*) <li>The current percentage CPU used by each child and in total by *************** *** 52,58 **** <pre> <Location /server-status> SetHandler server-status ! order deny,allow deny from all allow from .foo.com --- 52,58 ---- <pre> <Location /server-status> SetHandler server-status ! order deny,allow deny from all allow from .foo.com *************** *** 62,69 **** You can now access server statistics by using a Web browser to access the page <code>http://your.server.name/server-status</code> <p> ! Note that mod_status will only work when you are running Apache in ! <A HREF="core.html#servertype">standalone</A> mode and not <A HREF="core.html#servertype">inetd</A> mode. <h3>Automatic Updates</h3> --- 62,69 ---- You can now access server statistics by using a Web browser to access the page <code>http://your.server.name/server-status</code> <p> ! Note that mod_status will only work when you are running Apache in ! <A HREF="core.html#servertype">standalone</A> mode and not <A HREF="core.html#servertype">inetd</A> mode. <h3>Automatic Updates</h3> 1.10 +1 -1 apache/htdocs/manual/mod/mod_userdir.html Index: mod_userdir.html =================================================================== RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_userdir.html,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** mod_userdir.html 1997/07/02 03:09:24 1.9 --- mod_userdir.html 1997/07/06 17:19:19 1.10 *************** *** 81,87 **** <STRONG> Be careful when using this directive; for instance, <SAMP>"UserDir ./"</SAMP> would map ! <SAMP>"/~root"</SAMP> to <SAMP>"/"</SAMP> - which is probably undesirable. If you are running Apache 1.3 or above, it is strongly recommended that your configuration include a --- 81,87 ---- <STRONG> Be careful when using this directive; for instance, <SAMP>"UserDir ./"</SAMP> would map ! <SAMP>"/~root"</SAMP> to <SAMP>"/"</SAMP> - which is probably undesirable. If you are running Apache 1.3 or above, it is strongly recommended that your configuration include a