From 6beeb1b708550be0d4a53b272283e17e5e35fe17 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 17:01:30 +0200 Subject: Adding upstream version 2.4.57. Signed-off-by: Daniel Baumann --- docs/manual/mod/mod_setenvif.html.en | 361 +++++++++++++++++++++++++++++++++++ 1 file changed, 361 insertions(+) create mode 100644 docs/manual/mod/mod_setenvif.html.en (limited to 'docs/manual/mod/mod_setenvif.html.en') diff --git a/docs/manual/mod/mod_setenvif.html.en b/docs/manual/mod/mod_setenvif.html.en new file mode 100644 index 0000000..ac335b0 --- /dev/null +++ b/docs/manual/mod/mod_setenvif.html.en @@ -0,0 +1,361 @@ + + + + + +mod_setenvif - Apache HTTP Server Version 2.4 + + + + + + + + +
<-
+ +
+

Apache Module mod_setenvif

+
+

Available Languages:  en  | + fr  | + ja  | + ko  | + tr 

+
+ + + +
Description:Allows the setting of environment variables based +on characteristics of the request
Status:Base
Module Identifier:setenvif_module
Source File:mod_setenvif.c
+

Summary

+ + +

The mod_setenvif module allows you to set + internal environment variables according to whether different aspects of + the request match regular expressions you specify. These + environment variables can be used by other parts of the server + to make decisions about actions to be taken, as well as becoming + available to CGI scripts and SSI pages.

+ +

The directives are considered in the order they appear in + the configuration files. So more complex sequences can be used, + such as this example, which sets netscape if the + browser is mozilla but not MSIE.

+ +
BrowserMatch ^Mozilla netscape
+BrowserMatch MSIE !netscape
+ + +

When the server looks up a path via an internal + subrequest such as looking + for a DirectoryIndex + or generating a directory listing with mod_autoindex, + per-request environment variables are not inherited in the + subrequest. Additionally, + SetEnvIf directives + are not separately evaluated in the subrequest due to the API phases + mod_setenvif takes action in.

+ +
+ + +
top
+

BrowserMatch Directive

+ + + + + + + +
Description:Sets environment variables conditional on HTTP User-Agent +
Syntax:BrowserMatch regex [!]env-variable[=value] +[[!]env-variable[=value]] ...
Context:server config, virtual host, directory, .htaccess
Override:FileInfo
Status:Base
Module:mod_setenvif
+

The BrowserMatch is a special cases of the + SetEnvIf directive that + sets environment variables conditional on the + User-Agent HTTP request header. The following two + lines have the same effect:

+
BrowserMatch Robot is_a_robot
+SetEnvIf User-Agent Robot is_a_robot
+ + +

Some additional examples:

+
BrowserMatch ^Mozilla forms jpeg=yes browser=netscape
+BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript
+BrowserMatch MSIE !javascript
+ + +
+
top
+

BrowserMatchNoCase Directive

+ + + + + + + +
Description:Sets environment variables conditional on User-Agent without +respect to case
Syntax:BrowserMatchNoCase regex [!]env-variable[=value] + [[!]env-variable[=value]] ...
Context:server config, virtual host, directory, .htaccess
Override:FileInfo
Status:Base
Module:mod_setenvif
+ +

The BrowserMatchNoCase directive is + semantically identical to the BrowserMatch directive. + However, it provides for case-insensitive matching. For + example:

+
BrowserMatchNoCase mac platform=macintosh
+BrowserMatchNoCase win platform=windows
+ + +

The BrowserMatch and + BrowserMatchNoCase directives are special cases of + the SetEnvIf and SetEnvIfNoCase + directives. The following two lines have the same effect:

+
BrowserMatchNoCase Robot is_a_robot
+SetEnvIfNoCase User-Agent Robot is_a_robot
+ + +
+
top
+

SetEnvIf Directive

+ + + + + + + +
Description:Sets environment variables based on attributes of the request +
Syntax:SetEnvIf attribute + regex [!]env-variable[=value] + [[!]env-variable[=value]] ...
Context:server config, virtual host, directory, .htaccess
Override:FileInfo
Status:Base
Module:mod_setenvif
+

The SetEnvIf directive defines + environment variables based on attributes of the request. The + attribute specified in the first argument can be one of four + things:

+ +
    +
  1. An HTTP request header field (see RFC2616 + for more information about these); for example: Host, + User-Agent, Referer, and + Accept-Language. A regular expression may be + used to specify a set of request headers.
  2. + +
  3. One of the following aspects of the request: +
      +
    • Remote_Host - the hostname (if available) of + the client making the request
    • + +
    • Remote_Addr - the IP address of the client + making the request
    • + +
    • Server_Addr - the IP address of the server + on which the request was received (only with versions later + than 2.0.43)
    • + +
    • Request_Method - the name of the method + being used (GET, POST, et + cetera)
    • + +
    • Request_Protocol - the name and version of + the protocol with which the request was made (e.g., + "HTTP/0.9", "HTTP/1.1", etc.)
    • + +
    • Request_URI - the resource requested on the HTTP + request line -- generally the portion of the URL + following the scheme and host portion without the query string. See + the RewriteCond + directive of mod_rewrite for extra information on + how to match your query string.
    • +
    +
  4. + +
  5. The name of an environment variable in the list of those +associated with the request. This allows +SetEnvIf directives to test against the result +of prior matches. Only those environment variables defined by earlier +SetEnvIf[NoCase] 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. +Environment variables will be considered only if there was no match +among request characteristics and a regular expression was not +used for the attribute.
  6. + +
+ +

The second argument (regex) is a regular expression. If the regex +matches against the attribute, then the remainder of the +arguments are evaluated.

+ +

The rest of the arguments give the names of variables to set, and +optionally values to which they should be set. These take the form +of

+ +
    +
  1. varname, or
  2. + +
  3. !varname, or
  4. + +
  5. varname=value
  6. +
+ +

In the first form, the value will be set to "1". The second + will remove the given variable if already defined, and the + third will set the variable to the literal value given by + value. Since version 2.0.51, Apache httpd will + recognize occurrences of $1..$9 within + value and replace them by parenthesized subexpressions + of regex. $0 provides access to the whole + string matched by that pattern.

+ +
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\.example\.com intra_site_referral
+    
+SetEnvIf object_is_image xbm XBIT_PROCESSING=1
+    
+SetEnvIf Request_URI "\.(.*)$" EXTENSION=$1
+
+SetEnvIf ^TS  ^[a-z]  HAVE_TS
+ + +

The first three will set the environment variable + object_is_image if the request was for an image + file, and the fourth sets intra_site_referral if + the referring page was somewhere on the + www.mydomain.example.com Web site.

+ +

The last example will set environment variable + HAVE_TS if the request contains any headers that + begin with "TS" whose values begins with any character in the + set [a-z].

+ +

See also

+ +
+
top
+

SetEnvIfExpr Directive

+ + + + + + + +
Description:Sets environment variables based on an ap_expr expression
Syntax:SetEnvIfExpr expr + [!]env-variable[=value] + [[!]env-variable[=value]] ...
Context:server config, virtual host, directory, .htaccess
Override:FileInfo
Status:Base
Module:mod_setenvif
+

The SetEnvIfExpr directive defines + environment variables based on an <If> + ap_expr. These expressions will be evaluated at runtime, + and applied env-variable in the same fashion as SetEnvIf.

+ +
SetEnvIfExpr "tolower(req('X-Sendfile')) == 'd:\images\very_big.iso')" iso_delivered
+ + +

This would set the environment variable iso_delivered + every time our application attempts to send it via X-Sendfile

+ +

A more useful example would be to set the variable rfc1918 if the + remote IP address is a private address according to RFC 1918:

+ +
SetEnvIfExpr "-R '10.0.0.0/8' || -R '172.16.0.0/12' || -R '192.168.0.0/16'" rfc1918
+ + +

See also

+ +
+
top
+

SetEnvIfNoCase Directive

+ + + + + + + +
Description:Sets environment variables based on attributes of the request +without respect to case
Syntax:SetEnvIfNoCase attribute regex + [!]env-variable[=value] + [[!]env-variable[=value]] ...
Context:server config, virtual host, directory, .htaccess
Override:FileInfo
Status:Base
Module:mod_setenvif
+ +

The SetEnvIfNoCase is semantically identical to + the SetEnvIf directive, + and differs only in that the regular expression matching is + performed in a case-insensitive manner. For example:

+
SetEnvIfNoCase Host Example\.Org site=example
+ + +

This will cause the site environment variable + to be set to "example" if the HTTP request header + field Host: was included and contained + Example.Org, example.org, or any other + combination.

+ +
+
+
+

Available Languages:  en  | + fr  | + ja  | + ko  | + tr 

+
top

Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.
+
+ \ No newline at end of file -- cgit v1.2.3