Apache HTTP Server Version 2.3
Available Languages: en
Historically, there are several syntax variants for expressions used to express a condition in the different modules of the Apache HTTP Server. There is some ongoing effort to only use a single variant, called ap_expr, for all configuration directives. This document describes the ap_expr expression parser.
expr ::= "true" | "false" | "!" expr | expr "&&" expr | expr "||" expr | "(" expr ")" | comp comp ::= stringcomp | integercomp | unaryop word | word binaryop word | word "in" "{" wordlist "}" | word "in" listfunction | word "=~" regex | word "!~" regex stringcomp ::= word "==" word | word "eq" word | word "!=" word | word "ne" word | word "<" word | word "lt" word | word "<=" word | word "le" word | word ">" word | word "gt" word | word ">=" word | word "ge" word integercomp ::= word "-eq" word | word "eq" word | word "-ne" word | word "ne" word | word "-lt" word | word "lt" word | word "-le" word | word "le" word | word "-gt" word | word "gt" word | word "-ge" word | word "ge" word wordlist ::= word | wordlist "," word word ::= word "." word | digit | "'" string "'" | """ string """ | variable | function string ::= stringpart | string stringpart stringpart ::= cstring | variable cstring ::= ... digit ::= [0-9]+ variable ::= "%{" varname "}" | "%{" funcname ":" funcargs "}" function ::= funcname "(" word ")" listfunction ::= listfuncname "(" word ")"
XXX: not all vars are available in all request phases
Request headers (XXX:see req function)
Name |
---|
HTTP_ACCEPT |
HTTP_FORWARDED |
HTTP_HOST |
HTTP_PROXY_CONNECTION |
HTTP_REFERER |
HTTP_USER_AGENT |
Other request related variables
Name | Description |
---|---|
REQUEST_METHOD |
|
REQUEST_SCHEME |
|
REQUEST_URI |
|
REQUEST_FILENAME |
|
REMOTE_HOST |
|
REMOTE_IDENT |
|
REMOTE_USER |
|
SERVER_ADMIN |
|
SERVER_NAME |
|
SERVER_PORT |
|
SERVER_PROTOCOL |
|
SCRIPT_FILENAME |
|
PATH_INFO |
|
QUERY_STRING |
|
IS_SUBREQ |
|
DOCUMENT_ROOT |
|
AUTH_TYPE |
|
THE_REQUEST |
|
CONTENT_TYPE |
|
REMOTE_ADDR |
|
HTTPS |
|
IPV6 |
Misc variables
Name | Description |
---|---|
TIME_YEAR |
|
TIME_MON |
|
TIME_DAY |
|
TIME_HOUR |
|
TIME_MIN |
|
TIME_SEC |
|
TIME_WDAY |
|
TIME |
|
SERVER_SOFTWARE |
|
API_VERSION |
With the exception of some built-in comparison operators, binary
operators have the form "-[a-zA-Z][a-zA-Z0-9_]+
", i.e. a
minus and at least two characters. The name is not case sensitive.
Modules may register additional binary operators.
Name | Alternative | Description |
---|---|---|
== |
= |
String equality |
!= |
String inequality | |
< |
String less than | |
<= |
String less than or equal | |
> |
String greater than | |
>= |
String greater than or equal | |
-eq |
eq |
Integer equality |
-ne |
ne |
Integer inequality |
-lt |
lt |
Integer less than |
-le |
le |
Integer less than or equal |
-gt |
gt |
Integer greater than |
-ge |
ge |
Integer greater than or equal |
Unary operators have the form "-[a-zA-Z]
", i.e. a
minus and one character. The name is case sensitive.
Modules may register additional unary operators.
Name | Description |
---|---|
-n |
String is not empty (XXX: not yet implemented) |
-z |
String is empty (XXX: not yet implemented) |
Normal string-valued functions take one string as argument and return a string. Functions names are not case sensitive. Modules may register additional functions.
Name | Description |
---|---|
req , http |
Get HTTP request header |
resp |
Get HTTP response header |
osenv |
Lookup operating system environment variable |
env |
Lookup request environment variable (XXX: will need to be changed for better ssl_expr compat) |
lolower |
Convert string to lower case |
toupper |
Convert string to uppser case |
escape |
Escape special characters in %hex encoding |
unescape |
Unescape %hex encoded string, leaving URL-special characters encoded (XXX: describe better) |
In addition to string-valued functions, there are also list-valued functions which
take one string as argument and return a wordlist, i.e. a list of strings. The wordlist
can be used with the special -in
operator.
Functions names are not case sensitive.
Modules may register additional functions.
There are no built-in list-valued functions. mod_ssl provides
PeerExtList
(XXX: link)
Available Languages: en