所以目前这对我有用:
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。id
map
id
69
$idmap
参数monat
和jahr
的处理方式类似。它们的输出变量被连接起来进行if
比较,如果两个参数都与中指定的值匹配map
,则rewrite
执行。