NGINX完整的URLredirect重写规则需要帮助

我正在尝试redirect到一个完整的URL,包括URL上的每个string。

我要这个
http://www.SITE-A.com/everything?complete=url&fully=redirected
redirect到
http://www.SITE-B.com/everything?complete=url&fully=redirected

这工作正常与Apache使用

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

我做了一切,我发现在serverfault,但没有运气呢。
我所能得到的总是这个redirect
http://www.SITE-A.com/everything?complete=url&fully=redirected
redirect到
http://www.SITE-B.com/?complete=url&fully=redirected

redirect后,“ 一切 ”都消失了

我试过这些

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

根据你的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/

位置指令不考虑查询string(在?之后的所有内容)。 所以你需要在位置块内单独检查,可能使用if和$ args。