Nginx:从旧URL重定向到新URL并保留查询字符串

Nginx:从旧URL重定向到新URL并保留查询字符串

我需要使用 nginx rewrite 将旧 URL 重写为新 URL。我对查询字符串有一个问题。如果旧 URL 有查询字符串参数,则重定向不起作用。我当前的配置:

map $request_uri $newuri {
    /old-url/path /new-url/path;
}

server {
    location / {
        if ($newuri) {
            return 301 $newuri;
        }
    }
}

答案1

您的map语句正在对 执行字符串匹配$request_uri。变量$request_uri还包括查询字符串。如果要匹配查询字符串和不匹配查询字符串,则应仅匹配 的前面$request_uri,这可以使用以下方法实现正则表达式句法:

map $request_uri $newuri {
    ~*^/old-url/path /new-url/path;
}

这个文件了解详情。

相关内容