我正在尝试redirect来自包含“www”的url的所有stream量。 到类似的URL不包含它,但是当我这样做Nginx追加一个重复的查询string在URL的末尾。
例如,用户input:
www.website.com/test/?_id=12345
然后他们被redirect到:
website.com/test/?_id=12345?_id=12345
这是我的configuration:
server { server_name www.website.com; return 301 $scheme://website$request_uri permanent; } server { server_name website.com # actual server stuff }
我曾尝试追加一个'?' 到'request_uri'部分之后的redirect结束,因为形成我已经读过的应该工作,但它没有。
你的配置无效。 你似乎已经混合了return
和rewrite
的语法。 详情请参阅此文件 。
$request_uri
变量已经包含查询字符串,所以这应该与return
:
return 301 $scheme://example.com$request_uri;
rewrite
指令将追加查询字符串,除非一个?
被追加。 有可能使用rewrite
指令来完成相同的功能,但在这种情况下,这将是矫枉过正。
由于你的配置是无效的, nginx
仍在运行一个早期的配置,可能是一个早期的实验,把$request_uri
放在一个rewrite
指令中,因此是双查询字符串。