クエリを制限する方法が見つからないようです。今はこれがあります
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 のようにすべてのパラメータが削除されることです。2 番目の 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;
}
...
}