]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
docs: Rewrite AllowOverride Options= warning
authorRich Bowen <rbowen@apache.org>
Thu, 4 Jun 2026 15:22:55 +0000 (15:22 +0000)
committerRich Bowen <rbowen@apache.org>
Thu, 4 Jun 2026 15:22:55 +0000 (15:22 +0000)
The existing note about implicit disabling of Options was difficult
to parse. Rewrite as a type="warning" note with:
- Clear statement that the restriction controls enabling, not disabling
- Explanation of absolute vs relative (+/-) Options syntax
- Concrete example showing how inherited options get implicitly disabled

BZ#70099

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1934979 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/mod/core.xml

index 307620e709ca8652a9936402c783634d66fc1204..74c922a2590af7d2577d5305330f0aa1fd6132e9 100644 (file)
@@ -479,14 +479,35 @@ NoDecode option available in 2.3.12 and later.</compatibility>
       followed by a comma-separated list, without spaces, of options that
       may be set using the <directive module="core">Options</directive> directive.
 
-      <note><title>Implicit disabling of Options</title>
-      <p>Even though the list of options that may be used in .htaccess files
-         can be limited with this directive, as long as any <directive
-         module="core">Options</directive> directive is allowed any
-         other inherited option can be disabled by using the non-relative
-         syntax.  In other words, this mechanism cannot force a specific option
-         to remain <em>set</em> while allowing any others to be set.
-      </p></note>
+      <note type="warning"><title>Implicit disabling of Options</title>
+      <p>This restriction only controls which options a
+         <code>.htaccess</code> file may <em>enable</em>. It does not
+         prevent inherited options from being <em>disabled</em>.</p>
+
+      <p>When a <directive module="core">Options</directive> directive
+         in <code>.htaccess</code> uses absolute syntax (without
+         <code>+</code> or <code>-</code> prefixes), it <em>replaces</em>
+         the entire inherited option set. Any previously active options
+         not listed are implicitly turned off&mdash;even options that are
+         not in the <code>AllowOverride</code> permitted list.</p>
+
+      <p>For example, if the server configuration sets:</p>
+      <highlight language="config">
+Options Indexes FollowSymLinks ExecCGI
+AllowOverride Options=Indexes
+      </highlight>
+      <p>and a <code>.htaccess</code> file contains:</p>
+      <highlight language="config">
+Options Indexes
+      </highlight>
+      <p>then <code>FollowSymLinks</code> and <code>ExecCGI</code> are
+         implicitly disabled for that directory, even though the
+         <code>AllowOverride</code> line only permits setting
+         <code>Indexes</code>.</p>
+
+      <p>In short, this mechanism cannot force a specific option to
+         remain <em>set</em> while allowing any others to be set.</p>
+      </note>
 
       <highlight language="config">
       AllowOverride Options=Indexes,MultiViews