前端之家收集整理的这篇文章主要介绍了
NGINX $request_uri vs $uri,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
你如何确定何时使用$request_uri vs $uri?
根据Nginx文档,$request_uri是原始请求(例如,/ foo / bar.PHP?arg = baz包含参数,不能修改),但$uri指的是更改的URI.
如果URI没有改变,$uri = $request_uri?
使用时是不正确的,更好的还是更糟的:
map $uri $new_uri {
# do something
}
VS
map $request_uri $new_uri {
# do something
}
最佳答案
$uri不等于$request_uri.
$uri变量设置为Nginx当前正在处理的URI – 但它也需要进行规范化,包括:
>去除?和查询字符串
>连续/字符替换为单个/
> URL编码字符被解码
$request_uri的值始终是原始URI,不受上述任何规范的约束.
大多数情况下你会使用$uri,因为它是规范化的.在错误的位置使用$request_uri会导致URL编码的字符变为双重编码.
如果需要匹配URI及其查询字符串,请在map指令中使用$request_uri.