我需要设置 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”。好的,但我需要使用查询重定向到完整 URL。我该如何正确执行此操作?
答案1
您可以在 URL 中的任何位置添加$request_uri
或,也可以使用适当的 http 返回代码,例如,这可以更好地告诉浏览器您正在将其重定向到另一个位置。您的配置如下:$args
return
301
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;
}