NGNIX 重定向带两个参数

NGNIX 重定向带两个参数

所以目前这对我有用:

if ($request_uri = "/web/news.php?id=69") {
    rewrite ^ https://www.camper-center.ch/? last;
}

但是现在我也有/web/listing.php?monat=02&jahr=2020两个参数的 URL,而不是像上面那样只有一个参数。

if ($request_uri = "/web/listing.php?monat=02&jahr=2020") {
    rewrite ^ https://www.camper-center.ch/news/aktuell.html?month=02&year=2020? last;
}

这似乎不起作用。你有什么建议吗?

因为它将我重定向到带有德语参数的网站,所以我重定向了它们,最终它对我来说效果如下:

if ($request_uri = "/news/aktuell.html?monat=02&jahr=2020") {
    rewrite ^ https://www.camper-center.ch/news/aktuell.html?month=02&year=2020? last;
}

答案1

尝试:

if ($args ~* "/web/listing.php?monat=02&jahr=2020") {
    rewrite ^ https://www.camper-center.ch/news/aktuell.html?month=$arg_monat&year=$arg_jahr? last;
}

https://nginx.org/en/docs/http/ngx_http_core_module.html#variables

只需适应您的需求即可。

答案2

你可以尝试下面的方法。添加一个map进入http级别:

map $arg_id $idmap {
    default 0;
    "69" 1;
}

map $arg_monat $monatmap {
    default 0;
    "02" 1;
}

map $arg_jahr $jahrmap {
    default 0;
    "2020" 1;

然后使用以下if块:

if ($idmap = 1) {
    rewrite ^ https://www.camper-center.ch/? last;
}

if ($jahrmap$monatmap = "11") {
    rewrite ^ https://www.camper-center.ch/news/aktuell.html?month=02&year=2020 last;
}

map将输入变量的内容映射到输出变量。从 URI$arg_id获取查询参数。在上面,nginx 将参数与进行比较。如果匹配,则获取值 1。否则获取值 0。idmapid69$idmap

参数monatjahr的处理方式类似。它们的输出变量被连接起来进行if比较,如果两个参数都与中指定的值匹配map,则rewrite执行。

相关内容