Linux Nginx在重定向时复制查询字符串

Linux Nginx在重定向时复制查询字符串,linux,redirect,nginx,server,webserver,Linux,Redirect,Nginx,Server,Webserver,我正在尝试将所有流量从包含“www.”的url重定向到不包含它的类似url,但当我这样做时,Nginx会在url的末尾附加一个重复的查询字符串 例如,用户输入: www.website.com/test/?_id=12345 他们会被重定向到: website.com/test/?_id=12345?_id=12345 这是我的配置: server { server_name www.website.com; return 301 $scheme://website$request

我正在尝试将所有流量从包含“www.”的url重定向到不包含它的类似url,但当我这样做时,Nginx会在url的末尾附加一个重复的查询字符串

例如,用户输入:

 www.website.com/test/?_id=12345
他们会被重定向到:

website.com/test/?_id=12345?_id=12345
这是我的配置:

server {
  server_name www.website.com;
  return 301 $scheme://website$request_uri permanent;
}

server {
    server_name website.com
    # actual server stuff
}

我已尝试在“请求uri”部分之后的重定向末尾添加“?”,因为我所读的格式应该可以工作,但没有。您的配置无效。您似乎混淆了
return
rewrite
的语法。有关详细信息,请参阅

$request\u uri
变量已经包含查询字符串,因此这应该适用于
return

return 301 $scheme://example.com$request_uri;
rewrite
指令将附加查询字符串,除非附加了
。可以使用
rewrite
指令来完成相同的功能,但在这种情况下,这将是过分的


由于您的配置无效,
nginx
仍在使用早期配置运行,可能是早期的实验将
$request\u uri
置于
rewrite
指令中,因此出现了双查询字符串。

谢谢,我认为这是一个奇怪的组合,我的浏览器缓存不正确的重定向和你所说的。我很感激。