. Итак, на данный момент это работает для меня:
if ($request_uri = "/web/news.php?id=69") {
rewrite ^ https://www.camper-center.ch/? last;
}
Но теперь у меня также есть URL-адреса, такие как /web/listing.php ?monat = 02 & jahr = 2020
с двумя параметрами вместо одного, как указано выше.
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;
}
Попробуйте:
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
Просто адаптируйтесь к своим потребностям.
Вы можете попробовать следующий подход. Добавьте карту
на уровень 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
отображает содержимое входной переменной в выходную переменную. $ arg_id
принимает аргумент запроса id
из URI. На приведенной выше карте
nginx сравнивает аргумент id
с 69
. Если он совпадает, $ idmap
получает значение 1. В противном случае он получает значение 0.
Аргументы monat
и jahr
обрабатываются аналогично. Их выходные переменные объединяются в , если
сравнение, и если оба аргумента соответствуют значениям, указанным в map
, то выполняется перезапись
.