我似乎找不到限制某些查询的方法。目前我有这个
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;
}
...
}