我需要设置nginx将“www.test.com”重写为“www.new-test.com/test/test?foo=bar&bar=foo”。 我试过下面的代码:
server { listen 80; server_name test.com www.test.com; access_log off; autoindex off; location / { rewrite ^ http://www.new-test.com/dir/test?foo=bar&bar=foo permanent; } }
我的问题是:“如果在重写结束时指定了?,那么Nginx将放弃原始的$ args”。 好吧,但我需要redirect到与查询完整的URL。 我怎样才能正确地做到这一点?
你可以在URL中添加$request_uri或$args到你想要的任何地方,也可以使用return正确的http返回码301 ,例如,告诉浏览器你将它redirect到另一个地方。 您的configuration将如下所示:
server { listen 80; server_name test.com www.test.com; access_log off; autoindex off; return 301 http://www.new-test.com/dir/test?foo=bar&bar=foo&$args; or .... return 301 http://www.new-test.com$request_uri/dir/test?foo=bar&bar=foo; }