coar        99/06/04 11:40:01

  Modified:    src      CHANGES
               htdocs/manual/mod mod_setenvif.html
               src/modules/standard mod_setenvif.c
  Log:
        A minor enhancement to SetEnvIf*: allow it to test envariables
        as well as request attributes.
  
  Revision  Changes    Path
  1.1371    +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.1370
  retrieving revision 1.1371
  diff -u -r1.1370 -r1.1371
  --- CHANGES   1999/06/04 18:30:16     1.1370
  +++ CHANGES   1999/06/04 18:39:57     1.1371
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.7
   
  +  *) Allow SetEnvIf[NoCase] to test environment variables as well
  +     as header fields and request attributes.  [Ken Coar]
  +
     *) Fix mod_autoindex's handling of ScanHTMLTitles when file
        content-types are "text/html;parameters".  PR#4524  [Ken Coar]
   
  
  
  
  1.7       +24 -4     apache-1.3/htdocs/manual/mod/mod_setenvif.html
  
  Index: mod_setenvif.html
  ===================================================================
  RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_setenvif.html,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- mod_setenvif.html 1999/05/19 13:26:06     1.6
  +++ mod_setenvif.html 1999/06/04 18:40:00     1.7
  @@ -261,7 +261,8 @@
      HREF="directive-dict.html#Compatibility"
      REL="Help"
     ><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above; the
  -  Request_Protocol keyword is only available with 1.3.7 and later
  +  Request_Protocol keyword and environment-variable matching are only
  +  available with 1.3.7 and later
     </P>
     <P>
     The <SAMP>SetEnvIf</SAMP> directive defines environment variables
  @@ -299,15 +300,34 @@
     <SAMP>Host</SAMP>, <SAMP>User-Agent</SAMP>, and <SAMP>Referer</SAMP>.
     </P>
     <P>
  +  If the <EM>attribute</EM> name doesn't match any of the special keywords,
  +  nor any of the request's header field names, it is tested as the name
  +  of an environment variable in the list of those associated with the 
request.
  +  This allows <CODE>SetEnvIf</CODE> directives to test against the result
  +  of prior matches.
  +  </P>
  +  <BLOCKQUOTE>
  +   <STRONG>Only those environment variables defined by earlier
  +   <CODE>SetEnvIf[NoCase]</CODE> directives are available for testing in
  +   this manner.  'Earlier' means that they were defined at a broader scope
  +   (such as server-wide) or previously in the current directive's
  +   scope.</STRONG>
  +  </BLOCKQUOTE>
  +  <P>
     Example:
     </P>
     <PRE>
  -   SetEnvIf Request_URI "\.(gif)|(jpg)|(xbm)$" object_is_image
  +   SetEnvIf Request_URI "\.gif$" object_is_image=gif
  +   SetEnvIf Request_URI "\.jpg$" object_is_image=jpg
  +   SetEnvIf Request_URI "\.xbm$" object_is_image=xbm
  +        :
      SetEnvIf Referer www\.mydomain\.com intra_site_referral
  +        :
  +   SetEnvIf object_is_image xbm XBIT_PROCESSING=1
     </PRE>
     <P>
  -  The first will set the envariable <SAMP>object_is_image</SAMP> if the
  -  request was for an image file, and the second sets
  +  The first three will set the envariable <SAMP>object_is_image</SAMP> if the
  +  request was for an image file, and the fourth sets
     <SAMP>intra_site_referral</SAMP> if the referring page was somewhere
     on the <SAMP>www.mydomain.com</SAMP> Web site.
     </P>
  
  
  
  1.29      +3 -0      apache-1.3/src/modules/standard/mod_setenvif.c
  
  Index: mod_setenvif.c
  ===================================================================
  RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_setenvif.c,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- mod_setenvif.c    1999/05/21 12:16:24     1.28
  +++ mod_setenvif.c    1999/06/04 18:40:00     1.29
  @@ -364,6 +364,9 @@
                break;
            case SPECIAL_NOT:
                val = ap_table_get(r->headers_in, b->name);
  +             if (val == NULL) {
  +                 val = ap_table_get(r->subprocess_env, b->name);
  +             }
                break;
            }
           }
  
  
  

Reply via email to