我正在通过nginx运行一个web应用程序,无论何时出现,我都需要删除部分URL(?debug(,例如:
发件人https://example.com/web?debug#menu=accounts
https://example.com/web?debug#menu=orders
收件人https://example.com/web#menu=accounts
https://example.com/web#menu=orders
我的nginx配置文件有以下位置块:
location / {
proxy_pass http://example.com;
}
我在网上寻找了实现这一目标的方法,但没有任何效果。我尝试了以下操作,但url按原样传递,没有更改:
location ^~ ?debug# {
if ($request_uri ~* "?debug#(.*)") {
rewrite ^?debug(.*)$ $1 break;
proxy_pass http://example.com/$1;
}
}
location / {
proxy_pass http://example.com;
}
如有任何帮助,我们将不胜感激。
我找到了解决问题的方法。这是代码。
location / {
set $test 0;
if ($request_uri ~ "([^?]*)?(.*)debug([^&]*)&?(.*)") {
set $test 1;
}
if ($request_uri ~ "([^?]*)?(.*)debug=files([^&]*)&?(.*)") {
set $test 0;
}
if ($test = 1) {
set $args $2$4;
rewrite "^" $scheme://$host$uri;
}
proxy_pass http://example.com;
}
从以下链接的答案获得进一步帮助:
Nginx重定向-从URL 中删除特定的查询参数
我怎样才能使用";或";nginx中的运算符";如果";陈述