docs: add more notes on ProxyFCGISetEnvIf
Also fix up a couple typos.
@@ -209,7 +209,7 @@ ProxyPass "/myapp/" "balancer://myappcluster/"
<p>This directive allows the type of backend FastCGI application to be
specified. Some FastCGI servers, such as PHP-FPM, use historical quirks of
environment variables to identify the type of proxy server being used. Set
-this direcive to "GENERIC" if your non PHP-FPM application has trouble
+this directive to "GENERIC" if your non PHP-FPM application has trouble
interpreting environment variables such as SCRIPT_FILENAME or PATH_TRANSLATED
as set by the server.</p>
@@ -257,7 +257,7 @@ the condition expressions and value expressions.</p>
<p>Parameter syntax:</p>
<dl>
<dt>conditional-expression</dt>
-<dd>Specifies an expression that controls whether the environmen variable that
+<dd>Specifies an expression that controls whether the environment variable that
follows will be modified. For information on the expression syntax, see
the examples that follow or the full specification at the
<a href="../expr.html">ap_expr</a> documentation.
@@ -267,9 +267,10 @@ the condition expressions and value expressions.</p>
such as PATH_INFO. If preceded by an exclamation point, the variable
will be unset.</dd>
<dt>value-expression</dt>
-<dd>Specifies the replacement value for the preceding environment variable. Backreferences, such as "$1",
-can be included from regular expression captures in <var>conditional-expression</var>.
-If omitted, the variable is set to an empty string.</dd>
+<dd>Specifies the replacement value for the preceding environment variable.
+ Backreferences, such as "$1", can be included from regular expression
+ captures in <var>conditional-expression</var>. If omitted, the variable is
+ set (or overridden) to an empty string &mdash; but see the Note below.</dd>
</dl>
<example>
@@ -285,6 +286,26 @@ ProxyFCGISetEnvIf "reqenv('PATH_TRANSLATED') =~ m|(/.*prefix)(\d+)(.*)|" PATH_TR
</highlight>
</example>
+<note><title>Note: Unset vs. Empty</title>
+ The following will unset <code>VARIABLE</code>, preventing it from being sent
+ to the FastCGI server:
+
+ <highlight language="config">ProxyFCGISetEnvIf true !VARIABLE</highlight>
+
+ Whereas the following will erase any existing <em>value</em> of
+ <code>VARIABLE</code> (by setting it to the empty string), but the empty
+ <code>VARIABLE</code> will still be sent to the server:
+
+ <highlight language="config">ProxyFCGISetEnvIf true VARIABLE</highlight>
+
+ The CGI/1.1 specification
+ <a href="https://tools.ietf.org/html/rfc3875#section-4.1">does not
+ distinguish</a> between a variable with an empty value and a variable that
+ does not exist. However, many CGI and FastCGI implementations distinguish (or
+ allow scripts to distinguish) between the two. The choice of which to use is
+ dependent upon your implementation and your reason for modifying the variable.
+</note>
+
</usage>
</directivesynopsis>
