需要有关 NGINX 完整 URL 重定向重写规则的帮助

需要有关 NGINX 完整 URL 重定向重写规则的帮助

我正在尝试重定向一个完整的 URL,包括 URL 上的每个字符串。

我希望它
http://www.SITE-A.com/everything?complete=url&fully=redirected
重定向到
http://www.SITE-B.com/everything?complete=url&fully=redirected

这对于 Apache 来说是可行的

RewriteRule ^/?$ "http\:\/\/www\.site-b\.com\/" [R=301,L]

我尝试了 serverfault 上找到的所有方法,但还是没成功。
我得到的总是这个重定向
http://www.SITE-A.com/everything?complete=url&fully=redirected
重定向到
http://www.SITE-B.com/?complete=url&fully=redirected

一切' 在重定向后消失

我试过这些

location /quick-search { try_files $uri http://www.site-b.com/quick-search.php?$arg_q; }

location / { rewrite ^/(.*) http://www.site-b.com/$1 permanent; }

答案1

根据您的 Apache 重写规则,您正在尝试重写任何请求的主机部分。

使用 NGINX 实现此目的的常见方法是使用server块和return

server {
    listen 80;
    server_name www.site-a.com;

    return 301 http://www.site-b.com$request_uri;
}

server {
    listen 80;
    server_name www.site-b.com;

    [...your config...]
}

这是最快的方法,如下所示:https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/

答案2

位置指令不考虑查询字符串(? 之后的所有内容)。因此,您需要在位置块内单独检查这一点,可能使用 if 和 $args。

相关内容