假设 $request_uri 的值为 /a/b/c 。 $uri 的当前值为 /index.php 。是否可以将我的 $uri 更改为 /b/c 。
我试过这个,但似乎不起作用,
if ($request_uri ~* /a/(.*)/(.*)){
set $uri /$1/$2;
}
但这会导致“uri”变量重复的错误。我也试过了,
if ($request_uri ~* /a/(.*)/(.*)){
rewrite ^ /$1/$2 break;
}
但是 $variables 似乎没有存储值。
有办法吗?谢谢。
答案1
你能只使用临时变量吗?例如(未尝试):
if ($request_uri ~* /a/(.*)/(.*)){
set $tmp /$1/$2;
rewrite ^ $tmp break;
}
或者怎么样:
if ($request_uri ~* /a/(.*)/(.*)){
rewrite ^ $request_uri;
rewrite ^/[^/]*/(.*)/(.*) /$1/$2 break;
}
答案2
正如@MTeck 所回答的那样https://stackoverflow.com/questions/9084969/nginx-request-uri-without-args
如果您确实想要去除参数后的 $request_uri,那么您可以这样做。
local uri = string.gsub(ngx.var.request_uri, "?.*", "")
您将需要有 lua 可用,但它将完全按照您的要求执行。