技术解析

求教下 nginx 正则不匹配"?"号是什么原因
0
2021-05-21 00:22:58
idczone

nginx 规则

    location ~ /test/(.*) {
        proxy_pass               https://xxx/test.php?$1;
    }

php代码

结果

#curl http://xxx/test/123456
/test.php?123456
#curl http://xxx/test/12?132
/test.php?12

加个[]试试

我看错了,无视吧

/test/(.*)$

因为 URI 不允许有两个?

你是对的,无视我吧,

并不是这个原因,带?号只是我为了调试方便,另外还有#也会产生同样的结果

$query_string

所有 http server 都会忽略#和后面的字符串

location 不匹配 querystring


location ^~ /test {
proxy_pass https://xxx/test.php?$query_string;
}
不是在 location 里用

是没有转义的原因么?

这样可以

数据地带为您的网站提供全球顶级IDC资源