没有args的Nginx request_uri

时间:2012-01-31 18:33:54

标签: regex nginx

如果没有在末尾添加参数,我如何获得request_uri的值。我知道有一个uri变量,但我需要原始值,因为Nginx文档声明:

REQUEST_URI

  

此变量等于从中收到的原始请求URI   客户包括args。它无法修改。看看$ uri   重写/更改后的URI。不包括主机名。例:   “/foo/bar.php?arg=baz”

3 个答案:

答案 0 :(得分:16)

你正在寻找$ uri。它没有$ args。事实上,$ request_uri几乎相当于$ uri $ args。

如果你真的想要删除args的$ request_uri,你可以这样做。

local uri = string.gsub(ngx.var.request_uri, "?.*", "")

你需要拥有lua,但这样做会完全符合你的要求。

答案 1 :(得分:12)

我使用这张地图,没有lua:

map $request_uri $request_uri_path {
  "~^(?P<path>[^?]*)(\?.*)?$"  $path;
}

答案 2 :(得分:0)

被接受的答案为我指明了正确的方向,但是我不得不弄清楚该指令的添加位置,经过一段时间的调查,我发现i1 <- is.na(winners$film) winners$film[i1] <- winners$film.y[i1]

set_by_lua_block

我希望它可以为那些来这里的人节省一些时间。