如何使用 NGINX 重新導向 URL? (暫時和永久)

已發表: 2024-01-26

目錄
什麼是重定向?
Nginx 重新導向需要什麼?
常見的Nginx重新導向方法(暫時和永久)
如何使用 Nginx 重新導向 URL(暫時和永久)
檢查 Nginx 語法
重新啟動 Nginx 伺服器
概括
經常問的問題

什麼是重定向?

對於 Nginx,重新導向是一種 Web 伺服器功能,將網站流量從一個 URL 轉移到另一個 URL。 它是最有用的功能之一,透過它您可以輕鬆地將訪客自動重新導向到另一個位置。

儘管您可以執行多種類型的重定向,但最重要且最常用的兩種是永久重定向 (301) 和暫時重定向 (302)。

在這篇文章中,我們將透過範例向您展示重新導向方法,例如從 www 到非 www、Nginx 重新導向到網域、Nginx 從 HTTP 重新導向到 HTTPS 等。


閱讀: WordPress 重新導向 URL 是如何運作的? 5 種最佳方法


Nginx 重新導向需要什麼?

  • Nginx 提供了一項關鍵功能,即根據標準將網站 URL 重新導向到另一個位址。
  • Nginx 重新導向非常用戶友好且易於配置,因此管理網站 URL 非常靈活。
  • 它對於保留頁面的 SEO 排名非常有用,特別是當您從一個 CMS 遷移到另一個 CMS 時。
  • 儘管 URL 結構發生了變化,重定向功能也有助於保留 SERP 位置。

常見的Nginx重新導向方法(暫時和永久)

正如我們已經提到的,有多種類型的重定向方法可用,但在實踐中,常用的只有兩種,即暫時重定向和永久重定向。

暫時重定向(響應代碼:302 Found)

  • 從名稱本身,您就可以預見臨時藥物的作用。 好吧,此方法的目的是暫時將頁面的位置從一個地方更改到另一個地方。
  • 回應代碼:302 Found 用於顯示這些重定向期間頁面的暫時轉發。
  • 主要用於網站維護時; 臨時重定向會通知流量或使用者網站暫時無法使用。
  • 它也可用於將不完整的頁面重新導向到另一個點或主頁。
  • 範例場景:訪客導航到網站頁面,但由於維護,他們被重新導向到指示網站目前正在維護的通知。
Temporary Redirection
暫時重定向(響應代碼:302 Found)

永久重定向(回應代碼:301 Found)

  • 永久Nginx重定向用於永久重新定位頁面域。
  • 301 重定向用於指定頁面在此上下文中的永久移動。
  • 這種重定向主要用於當使用者想要更改網域名稱並且不再希望網站流量存取舊位置時。
Permanent Redirection
永久重定向(回應代碼:301 Found)

如何使用 Nginx 重新導向 URL(暫時和永久)

在開始之前,首先您需要確保您的 VPS 或虛擬專用伺服器上安裝了 NGINX。 之後透過 SSH 存取您的 VPS。 在 Wpoven,您可以透過 SSH 命令列控制台輕鬆存取您的網站。


閱讀:我可以透過 SSH 造訪我的 WPOven 網站嗎


NGINX 的配置設定

  • NGINX 設定檔位置: NGINX 的設定通常儲存在 .conf 檔案中,該檔案是一個包含伺服器指令和設定的純文字檔案。
  • 預設位置: NGINX 設定檔的預設位置通常位於網站的文檔根目錄中。 在本例中,它提到了路徑: /etc/nginx/sites-available/directory_name.conf
  • 文檔根目錄:此目錄是儲存網站檔案的位置。 文件根目錄可能會有所不同; 對於單一網站伺服器,它可能位於/html目錄中。 如果您的伺服器託管多個站點,則文件根目錄可能位於特定的網域目錄中,例如/domain.com
  • 設定檔命名: .conf 檔案的名稱與您的網站相對應。 例如,如果您的網站位於/html目錄中,則 .conf 檔案可能會命名為html.conf 。 如果它位於/domain.com等目錄中,則 .conf 檔案可以命名為domain.com.conf
  • 預設設定檔:/etc/nginx/sites-available/directory中,通常有一個預設檔可以用作模板。 該文件可能包含您可以複製或修改以滿足您的需求的基本配置。
  • 建立新的設定檔:或者,您可以選擇建立新的 .conf 檔案。 例如,您可以根據網站的結構和命名約定建立名為html.confdomain.com.conf的檔案。

您可能會驚訝地發現,在 Nginx 中,有一個內建工具可用,稱為「重寫」指令。 這是一個非常方便的工具,可以輕鬆進行重新導向。 最好的部分是你不需要對此做任何特別的事情,每當你安裝新的 Nginx 時它就會自動出現。

這個「重寫」指令不僅用於執行基本的重定向,而且它的用途非常廣泛。 即您將能夠建立兩種類型的重定向:永久重定向和暫時重定向。

您所要做的就是只傳遞兩個參數:舊 URL 和新 URL。 以下是一些範例供您參考。 只需在伺服器配置中輸入以下行即可。

首先,透過在終端機中輸入以下命令來開啟設定檔。

$ sudo vi /etc/nginx/nginx.conf

之後根據您的要求使用下面給出的命令。

1. 頁面到頁面 Nginx 重新導向

臨時頁面到頁面 Nginx 重新導向

server {
# Temporary redirect to an individual page
rewrite ^/oldpage$ http://www.example.com/newpage redirect;
}

永久頁到頁 Nginx 重新導向

server {
# Permanent redirect to an individual page
rewrite ^/oldpage$ http://www.example.com/newpage permanent;
}

從上面的命令中,您已經注意到,如果您想建立永久重定向,您需要做的就是將指令末尾的“redirect”替換為“permanent”。

2.WWW到非www的Nginx重新導向

永久 www 到非 www 重定向:

server {
# Permanent redirect to non-www
server_name www.example.com;
rewrite ^/(.*)$ http://example.com/$1 permanent;
}


注意:如果您想從非 www 重新導向到 www,只需取代上述命令中提到的網站 URL 即可。 即用 example.com 取代 www.example.com,反之亦然。


3. Nginx中如何將URL從HTTP重新導向到HTTPS?

在執行此重定向之前,請不要忘記安裝 SSL 憑證。 重定向到 HTTPS 有它的好處。 它有助於保護您的網站免受所有 MIMT 攻擊、資料竊取等。甚至它們的端口也不同,例如 HTTP 使用 80 端口,而 HTTPS 使用 443。

因此,為了保護您和訪客之間共享的所有敏感訊息,您需要以下命令:

server {
listen 80;
server_name www.domain.tld;
return 301 https://www.domain.tld$request_uri;
}

4. Nginx 將 URL 重新導向到另一個 URL

如果您希望永久重新導向(即 nginx 重新導向到另一個 URL 301),請使用下列命令:

從舊域到新網域,

server {
listen 80;
listen 443 ssl;
server_name olddomain.com www.olddomain.com;
return 301 $scheme://www.newdomain.com$request_uri;
}

或者

server {
# Permanent redirect to new URL
listen 443 ssl;
# Add this line to listen on the HTTPS port and enable SSL server_name olddomain.com;
ssl_certificate /path/to/your/ssl_certificate.crt; # Update with the actual path to your SSL certificate
ssl_certificate_key /path/to/your/ssl_certificate_key.key; # Update with the actual path to your SSL certificate key
# Additional SSL settings can be configured here
rewrite ^/(.*)$ https://newdomain.com/$1 permanent;
# Update to use 'https' protocol
}

  • 我們使用 Nginx 中名為「rewrite」指令的工具為我們的網站設定了重新導向。
  • ^/(.*)$是一個正規表示式,它將使用 URL 中最後一個斜杠 ( / ) 之後的所有內容。
  • 例如,如果有人嘗試存取http://olddomain.com/index.html ,它將使用index.html部分。
  • 因此,如果您要訪問http://olddomain.com/index.html ,它會順利地將您重定向到http://newdomain.com/index.html
  • 其想法是將用戶無縫重定向到新網域上的相同內容。
  • 為了確保此重定向是永久性的,我們在rewrite指令後添加了一個特殊的關鍵字“Permanent”。
  • 這使用所謂的 HTTP 301 狀態代碼告訴瀏覽器和搜尋引擎這是永久性變更。

5.Nginx重新導向到另一個網域而不改變URL

假設您要將網域 olddomain.com 重定向到 newdomain.com 而不更改 URL。 這表示當您輸入olddomain.com時,它應該重定向到newdomain.com,但URL仍應顯示olddomain.com。

這是您可以採取的方法,

server {
listen 80;
server_name olddomain.com;

location / {
proxy_pass http://newdomain.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
}

6. 特定站點 Nginx 重定向

server {
listen 80;
server_name example.com;
return 301 http://newexample.com$request_uri;
}


檢查 Nginx 語法

若要檢查所有 nginx 語法是否正確,請使用下列命令:

nginx -t

如果輸出結果為空,則表示語法正確,需要重新啟動Nginx伺服器才能使修改生效。


重新啟動 Nginx 伺服器

不要忘記使用以下命令重新啟動 Nginx 伺服器以使這些規則生效:

sudo systemctl restart Nginx


概括

如上所述,Nginx 已被證明是最強大且用戶友好的 Web 伺服器,可讓您輕鬆進行永久和臨時 Nginx 重定向。

閱讀此部落格後,現在您知道如何使用 NGINX 建立重新導向 URL。 nginx 是否從 HTTP 重新導向到 HTTPS、從一個網域重新導向到另一個網域等。

此外,您還了解了重定向如何影響您的 SEO 排名,因此請務必確保使用正確的重新導向類型。

有了這個有用的功能,您可以根據趨勢和要求輕鬆更改網站結構,而不必擔心流量和 SERP 排名損失。

WPOven 為您的下一個 NGINX 專案提供 WordPress 管理的託管選項。 聯絡我們討論最適合您的選擇。

如果您有任何疑問或建議,請在下面的評論部分告訴我們:


經常問的問題

如何在 nginx 中重新導向 URL?

在 Nginx 中,有一個內建工具可用,稱為「重寫」指令。 這是一個非常方便的工具,可以輕鬆進行重新導向。 最好的部分是你不需要對此做任何特別的事情,每當你安裝新的 Nginx 時它就會自動出現。

Nginx 的重新導向程式碼是什麼?

nginx 非常通用,它提供兩種類型的重定向,永久重定向,其回應代碼為 301,臨時重定向回應代碼為 302。

NGINX 有何用途?

Nginx 是一個多功能、高效能的 Web 伺服器和反向代理伺服器。 它通常用於以下用途: Web 伺服器反向代理伺服器、負載平衡器SSL/TLS 終止快取內容分發網路 (CDN)API 閘道WebSocket 支援安全性高可用性架構