How do you determine when to use $request_uri vs $uri?
According to NGINX documentation, $request_uri is the original request (for example, /foo/bar.php?arg=baz includes arguments and can't be modified) but $uri refers to the altered URI.
If the URI doesn't change, does $uri = $request_uri?
Would it be incorrect or better or worse to use:
map $uri $new_uri {
# do something
}
vs
map $request_uri $new_uri {
# do something
}
$uri is not equivalent to $request_uri.
The $uri variable is set to the URI that nginx is currently processing - but it is also subject to normalisation, including:
- Removal of the
? and query string
- Consecutive
/ characters are replace by a single /
- URL encoded characters are decoded
The value of $request_uri is always the original URI and is not subject to any of the above normalisations.
Most of the time you would use $uri, because it is normalised. Using $request_uri in the wrong place can cause URL encoded characters to become doubly encoded.
Use $request_uri in a map directive, if you need to match the URI and its query string.
所有评论(0)