Nginx:从旧的URLredirect到新的,并保持查询string

我需要使用nginx重写来重写旧的url。 查询string有一个问题。 如果旧url具有查询string参数,redirect不起作用。 我目前的configuration:

map $request_uri $newuri { /old-url/path /new-url/path; } server { location / { if ($newuri) { return 301 $newuri; } } } 

您的map语句在$request_uri上执行string匹配。 variables$request_uri还包含查询string。 如果你想匹配和不匹配查询string,你应该只匹配$request_uri的前面,这可以使用正则expression式语法来完成:

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

详情请参阅此文件 。