如何在 Nginx 和 Apache 上建立 301 重定向


在本文中,我們將學習如何將 URL 或域名重定向到另一個地址。這可以透過使用 HTTP 重定向來實現。URL 重定向是一種常用的技術,用於將一個域名地址指向另一個域名地址,我們可以在 Apache 和 Nginx 上都實現這一點。

重定向到另一個域名

我們可能會遇到這種情況:我們已經建立了一個網站,並且需要更改網站的域名。在這裡,我們不能透過刪除舊域名來做到這一點,因為這可能會導致舊域名的內容損壞和消失,訪問者將無法找到新位置的資訊。這也可能導致舊域名流量的損失,從而導致已經建立的域名的信譽損失。

如果我們認為我們的原始域名是“mydomain.com”,並且我們應該購買一個類似的域名,例如“mydomain.net”或“mydomain.org”,則始終建議購買一個類似且與原始域名匹配的域名,以用於演示目的。

通用 SSL 重定向

目前,所有網路流量都重定向到 HTTPS (SSL),而不是標準 HTTP。使用重定向,我們可以將所有來自 http://mydomain.com 的網路流量重定向到 https://mydomain.com。

重定向方法

URL 重定向最常用和最常見的方法是 301(永久重定向)和 302(臨時重定向)。

302 臨時重定向

臨時重定向將通知瀏覽器內容臨時位於另一個位置,並在恢復後訪問原始 URL 或網頁。

例如,如果我們正在計劃網站維護,並且想要將網站重定向以臨時服務網路需求,我們將把所有來自您域名的網路流量重定向到維護頁面,我們可以在該頁面上向訪問者提供有關維護的資訊。

301 永久重定向

永久重定向將通知瀏覽器網站不再使用舊 URL 提供服務,應更新此資訊並指向我們釋出的新 URL。

例如,如果我們需要永久更改域名或將 URL 從舊位置永久更改到新位置,就像我們將內容永久移動到新位置一樣。

在 Apache 上重定向

Apache 有不同的模組,我們可以使用 mod_alias 模組和 mod_rewrite 模組來實現重定向,這兩個模組都可以廣泛用於重定向網路。

在 Apache 上配置重定向

Apache 可以使用簡單的“Redirect”指令進行配置,該指令包含在“mod_alias”模組中,此重定向需要兩個引數,一個是舊 URL,另一個是新 URL。

重定向的簡單配置檔案如下所示:

<VirtualHost *:80>
   ServerName www.olddomain.com
   Redirect / http://www.newdomain.com
</VirtualHost>
.
<VirtualHost *:80>
   ServerName www.newdomain.com
   . . .
</VirtualHost>

在上面的配置中,我們指示 Apache 將瀏覽器重定向到將對 olddomain.com 的網路請求重定向到 newdomain.com,此重定向僅適用於單個網頁,不適用於整個網站。

預設情況下,建立的重定向是 302 臨時重定向,永久重定向可以透過以下幾行完成:

可以透過兩種方式完成:

Redirect 301 /oldlocation http://www.newdomain2.com/newlocation
or
Redirect permanent /oldlocation http://www.newdomain2.com/newlocation

RedirectMatch 指令

如果我們需要重定向多個頁面,可以使用“RedirectMatch”指令,該指令允許我們使用正則表示式指定與模式匹配的資料夾。它重定向整個目錄,而不是單個頁面。

RedirectMatch ^/images/(.*)$ http://images.example.com/$1

在上面的程式碼中,RedirectMatch 匹配括號內的模式,然後使用引用在重定向指令中使用值“$1”進行測試,“1”是第一個測試組,後續組按順序從數字中獲取。

在 Nginx 上重定向

在 Nginx 上重定向可以透過多種方式完成,但最常見的方法是為我們想要重定向的內容建立伺服器塊。

server {
   listen 800;
   server_name olddomain.com;
   return 301 $scheme://newdomain.com$request_uri;
}

在上面的示例中,我們使用伺服器塊將對 olddomain.com 的請求重定向到 newdomain.com。

它將返回 URL 重定向中給出的狀態程式碼,並將執行 URL 替換。

“$scheme” 變數用於將原始請求(即 http 或 https)重定向到新格式 URL 中的 301 永久重定向。

可以使用 rewrite 指令將資料夾重定向到單獨的子域名或新域名,配置如下。

rewrite ^/images/(.*)$ http://docs.domain2.com/$1 redirect;

上述指令應放在 Nginx 配置的伺服器塊中,這將對 images 資料夾的請求發出臨時重定向到我們指定的新的域名或子域名。

如果我們將上面的行的末尾的重定向更改為永久重定向,則重定向將永久完成。

rewrite ^/images/(.*)$ http://docs.domain2.com/$1 permanent;

在本文中,我們學習瞭如何將請求 URL 重定向到新位置。我們必須使用正確的重定向方法來最佳化重定向的使用,以維護網頁的存在。此外,請確保在需要修改網站時它也能正常工作。

更新於:2020年1月28日

5000+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告