The decoded URI can be found at ngx.var.uri . It does not contain a query string, if you need it, see ngx.var.query_string .
EDIT: if you cannot use this, here is a simple way to unescape URLs in Lua.
local hex_to_char = function(x) return string.char(tonumber(x, 16)) end local unescape = function(url) return url:gsub("%%(%x%x)", hex_to_char) end
Usage example:
local url = "/test/some%20string?foo=bar" print(unescape(url)) -- /test/some string?foo=bar
But you should probably split the query string before using it.
source share