我需要使用 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;
}
看这个文件了解详情。