Я не могу найти способ ограничить некоторые запросы. Сейчас у меня это
if ($args ~* "(.*&)?page="){
set $wrongP W;
}
if ($args !~* (.*&)?page=(2|12|24)$){
set $wrongP "${wrongP}R";
}
if ($wrongP = WR){
rewrite ^(.*)$ $uri? permanent;
}
Это делает именно то, что я хочу, проблема в том, что если url имеет более одного параметра, например /somefile.html?page=2&arg=file, он удаляет ВСЕ параметры. Я предполагаю, что это из-за второго if.
Как проверить URL-адреса, имеющие несколько переменных, и удалить их все, только если переменная страницы не равна 2, 14 или 24?
решение1
Я думаю, вам нужно что-то вроде этого (используя map
):
map $arg_page $need_redirect {
default "1";
"" "0";
"2" "0";
"14" "0";
"24" "0";
}
server {
...
if ($need_redirect) {
rewrite ^ $uri? permanent;
}
...
}