Ich kann anscheinend keine Möglichkeit finden, einige Abfragen einzuschränken. Im Moment habe ich dies
if ($args ~* "(.*&)?page="){
set $wrongP W;
}
if ($args !~* (.*&)?page=(2|12|24)$){
set $wrongP "${wrongP}R";
}
if ($wrongP = WR){
rewrite ^(.*)$ $uri? permanent;
}
Das macht genau das, was ich will. Das Problem ist, wenn die URL mehr als einen Parameter hat, z. B. /somefile.html?page=2&arg=file, werden ALLE Parameter entfernt. Ich vermute, es liegt am zweiten if.
Wie prüft man, ob URLs mehrere Variablen haben, und entfernt sie alle nur, wenn die Seitenvariable ungleich 2, 14 oder 24 ist?
Antwort1
Ich vermute, dass Sie so etwas brauchen (mit map
):
map $arg_page $need_redirect {
default "1";
"" "0";
"2" "0";
"14" "0";
"24" "0";
}
server {
...
if ($need_redirect) {
rewrite ^ $uri? permanent;
}
...
}