Nginx

需要有關 NGINX 完整 URL 重定向重寫規則的幫助

  • August 29, 2016

我正在嘗試重定向一個完整的 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; }

根據您的 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/

位置指令不考慮查詢字元串(?之後的所有內容)。因此,您需要在 location 塊中單獨檢查這一點,可能使用 if 和 $args。

引用自:https://serverfault.com/questions/799676