Nginx - 使用完整 URL 将域名重写为域名

Nginx - 使用完整 URL 将域名重写为域名

我需要设置 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 返回代码,例如,这可以更好地告诉浏览器您正在将其重定向到另一个位置。您的配置如下:$argsreturn301

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;
}

相关内容