bud*_*dha 4 url nginx url-rewriting query-string
我正在一个项目中,我需要设置nginx重写规则来修改带有查询请求的url。例如:
www.abc.com/pathA/pathB/script.pl?paraA=10¶B=20
将被重写为:www.abc.com/pathA/pathB/script.pl.1020
我尝试使用变量$ args或$ query_string(基于nginx doc,它们相同)来检查url是否具有查询请求,因为我要重写。但是我发现$ args(或$ query_string)仅包含&之前的内容。
在我的示例中,这意味着$ args = paraA = 10。&之后,我无法获取参数内容。我确定此Nginx错误日志,并将其设置为调试级别。
知道为什么我在变量$ args或$ query_string中&之后无法获取查询参数吗?
先谢谢了。
问题不是由nginx配置文件引起的。这是因为我在使用 curl 发送请求时忘记了双引号。例如: curl "www.abc.com/pathA/pathB/script.pl?paraA=10¶B=20" 没有双引号,"¶B=20" 永远不会被实际发送。
您需要使用 $arg_<argname>
www.abc.com/pathA/pathB/script.pl?paraA=10¶B=20将被重写为:www.abc.com/pathA/pathB/script.pl.1020
下面是执行此操作的示例配置
location /pathA/pathB/script.pl {
set $need_redirect "";
if ($arg_paraA) {
set $need_redirect "A";
}
if ($arg_paraB) {
set $need_redirect "B$need_redirect";
}
if ($need_redirect = "BA") {
rewrite ^(.*)$ $1.$arg_paraA$arg_paraB;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16349 次 |
最近记录: |