我有以下 Apache 重写指令:
RewriteCond %{REQUEST_URI} ^/proxy(/|$) [NC]
RewriteCond %{QUERY_STRING} (^|&)uri=(.*?)(&|$) [NC]
RewriteRule .* /api/vs1.0/%2 [NC,L]
我正在尝试 nginx,因此尝试将重写移过去。我想到了...
rewrite ^/proxy(/|$) /api/vs1.0/$2 last;
rewrite (^|&)uri=(.*?)(&|$) /api/vs1.0/$2 last;
这可能完全不正确。我只是一个普通的 Web 开发人员,所以我想知道是否有人可以在这里帮忙。我将不胜感激。我明白我忽略了查询字符串规范,但我认为这不应该有关系。我对原始重写要完成的任务只有一个模糊的概念,因此尽管阅读了两个服务器的相关文档,但我并不希望在这里想出一些像样的东西。
答案1
尝试这个:
location ~* ^/proxy(/|$) {
if ($args ~* "(^|&)uri=(.*?)(&|$)") {
set $arg_uri $2;
rewrite .* /api/vs1.0/$arg_uri last;
}
}
~*
: 用于不区分大小写的匹配$args
:是请求中的GET参数