| Syntax: | if ( condition ) { ... } |
| Default: | |
| Context: | server location |
| Reference: | if |
note: Before using if please see the if is evil page and consider using try_files instead.
Checks the truth of a condition. If the condition evaluates to true, then the code indicated in the curly braces is carried out and the request is processed in accordance with the configuration within the following block. The configuration inside the ifdirective is inherited from the previous level.
The condition can be:
"", or any string starting with "0"; = and != operators; ~ performs a case-sensitive match ~* performs a case-insensitive match (firefox matches FireFox) !~ and !~* mean the opposite, "doesn't match" -f or !-f operators; -d or !-d; -e or !-e; -x or !-x. Parts of the regular expressions can be in parentheses, whose value can then later be accessed in the $1 to $9 variables. See Extracting matches.
Examples of use:
if ($http_user_agent ~ MSIE) { rewrite ^(.*)$ /msie/$1 break; } if ($http_cookie ~* "id=([^;] +)(?:;|$)" ) { set $id $1; } if ($request_method = POST ) { return 405; } if ($slow) { limit_rate 10k; } if ($invalid_referer) { return 403; } if ($args ~ post=140){ rewrite ^ http://example.com/ permanent; }
The value of the built-in variable $invalid_referer is given by the directive valid_referers.