如何在 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 重定向到新位置。我們必須使用正確的重定向方法來最佳化重定向的使用,以維護網頁的存在。此外,請確保在需要修改網站時它也能正常工作。