nginx實(shí)現(xiàn)域名跳轉(zhuǎn)的幾種方式
在日常項(xiàng)目中,我們經(jīng)常會(huì)遇到這樣的需求或情況:
- 訪問
http://abc.com時(shí),強(qiáng)制跳到https://www.abc.com,上面域名發(fā)生變化。 - 舊域名
old.com遷移到new.com,用戶訪問舊域名時(shí)需要自動(dòng)跳轉(zhuǎn)。 - 為了 SEO 統(tǒng)一入口,
abc.com和www.abc.com最終都要跳到同一個(gè)主域名。
對(duì)于域名跳轉(zhuǎn),我們可以在 Web 服務(wù)器層實(shí)現(xiàn) 也可以在 應(yīng)用層中實(shí)現(xiàn)。下面我主要講解在Web 服務(wù)層 Nginx中的實(shí)現(xiàn)方式。
這些場景在 Nginx 中都可以很優(yōu)雅地實(shí)現(xiàn),如下:
1. 301 永久重定向(推薦 SEO 場景)
如果網(wǎng)站更換了域名,或者需要強(qiáng)制統(tǒng)一入口,可以用 301 永久重定向。
server {
listen 80;
server_name old.com;
# 永久重定向到新域名,并保留路徑和參數(shù)
return 301 https://new.com$request_uri;
}
?? 說明:
301:告訴瀏覽器和搜索引擎,這是永久跳轉(zhuǎn),搜索引擎會(huì)更新索引。$request_uri:保留原路徑和查詢參數(shù),比如/about?from=123。
示例效果:訪問 http://old.com/about → 自動(dòng)跳到 https://new.com/about
如下圖演示所示:
我圖中的演示是本地項(xiàng)目跳百度鏈接的 demo,實(shí)際項(xiàng)目中可以根據(jù)實(shí)際情況進(jìn)行配置。

我本地項(xiàng)目的配置:
server {
listen 80;
server_name localhost;
# 永久重定向到新域名
return 301 https://www.baidu.com;
}
2. 302 臨時(shí)重定向(推薦活動(dòng)頁/短鏈場景)
如果只是臨時(shí)跳轉(zhuǎn)(例如活動(dòng)推廣、臨時(shí)域名),可以使用 302。
server {
listen 80;
server_name promo.old.com;
# 臨時(shí)跳轉(zhuǎn),不會(huì)影響搜索引擎索引
return 302 https://event.new.com$request_uri;
}
?? 說明:
302:臨時(shí)跳轉(zhuǎn),搜索引擎不會(huì)更新索引。- 常用于:活動(dòng)頁、營銷短鏈。
3. 強(qiáng)制 HTTPS 跳轉(zhuǎn)
為了保證安全,通常會(huì)把所有 HTTP 請(qǐng)求跳轉(zhuǎn)到 HTTPS。
server {
listen 80;
server_name www.abc.com;
return 301 https://www.abc.com$request_uri;
}
?? 效果:訪問 http://www.abc.com/login → 自動(dòng)跳到 https://www.abc.com/login
4. 去掉或強(qiáng)制www
很多公司會(huì)要求所有請(qǐng)求統(tǒng)一成 www.abc.com 或 abc.com,這樣可以避免 SEO 重復(fù)收錄。
去掉www→ 跳到裸域名
server {
listen 80;
server_name www.abc.com;
return 301 https://abc.com$request_uri;
}
強(qiáng)制加www
server {
listen 80;
server_name abc.com;
return 301 https://www.abc.com$request_uri;
}
5. 正則匹配更復(fù)雜的跳轉(zhuǎn)
有時(shí)候舊域名和新域名的路徑不一樣,可以用正則匹配。
server {
listen 80;
server_name old.com;
location /oldpath/(.*) {
return 301 https://new.com/newpath/$1;
}
}
?? 效果:訪問 http://old.com/oldpath/123 → 跳到 https://new.com/newpath/123
6. 總結(jié)
在日常項(xiàng)目中,推薦優(yōu)先使用 Nginx 配置跳轉(zhuǎn),因?yàn)椋?/p>
- 配置簡單,性能高,不會(huì)增加應(yīng)用層壓力。
301/302語義明確,對(duì) SEO 和用戶體驗(yàn)都更友好。- 可以靈活控制是否保留路徑和參數(shù)。
常見實(shí)踐:
- SEO & 域名統(tǒng)一 → 用
301 - 活動(dòng)頁 & 臨時(shí)跳轉(zhuǎn) → 用
302 - 安全要求 → 強(qiáng)制 HTTPS
7. 常見問題
1. 301 和 302 的區(qū)別
從 用戶體驗(yàn) 來看:
- 瀏覽器訪問時(shí),都會(huì)立即跳轉(zhuǎn)到新地址,看起來沒什么差別(所以你測試時(shí)感覺一樣)。
從 底層邏輯 來看:
301 永久重定向
- 告訴瀏覽器/搜索引擎:這個(gè)資源以后都在新地址了。
- 瀏覽器可能會(huì) 緩存跳轉(zhuǎn)規(guī)則,下次再訪問舊域名時(shí),直接跳過請(qǐng)求。
- 搜索引擎會(huì)更新索引,把權(quán)重轉(zhuǎn)移到新域名。
302 臨時(shí)重定向
- 告訴瀏覽器/搜索引擎:這是臨時(shí)跳轉(zhuǎn),原地址以后還可能恢復(fù)。
- 瀏覽器一般不會(huì)長期緩存規(guī)則。
- 搜索引擎不會(huì)把權(quán)重轉(zhuǎn)移到新域名。
?? 總結(jié):
- SEO 場景(換域名/統(tǒng)一入口) → 用 301。
- 臨時(shí)活動(dòng) / 營銷頁 → 用 302。
- 用戶體驗(yàn)基本一樣,主要區(qū)別在 緩存 & 搜索引擎。
2.return 302 https://event.new.com$request_uri;是否是固定寫法
這不是唯一寫法,但這是最常見、最簡潔的寫法。
return 302→ 表示返回一個(gè) 302 臨時(shí)重定向 狀態(tài)碼。https://event.new.com→ 目標(biāo)域名。$request_uri→ 變量,代表原始請(qǐng)求的路徑和參數(shù)。
舉個(gè)例子
用戶請(qǐng)求:
http://promo.old.com/sale?from=wechat
Nginx 配置:
return 302 https://event.new.com$request_uri;
跳轉(zhuǎn)結(jié)果:
https://event.new.com/sale?from=wechat
只跳到首頁(不保留路徑參數(shù))
return 302 https://event.new.com;
?? 無論用戶訪問什么路徑,都直接跳到 https://event.new.com 首頁。
路徑改寫(比如 old → new)
location /oldpath/(.*) {
return 302 https://event.new.com/newpath/$1;
}
?? http://old.com/oldpath/123 → https://event.new.com/newpath/123
? 所以:
return 302 https://event.new.com$request_uri;只是最常見的寫法(保留路徑和參數(shù))。- 你完全可以根據(jù)項(xiàng)目需要,改成只跳首頁、改寫路徑、或者換成 301。
到此這篇關(guān)于nginx實(shí)現(xiàn)域名跳轉(zhuǎn)的幾種方式的文章就介紹到這了,更多相關(guān)nginx 域名跳轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx location中多個(gè)if里面proxy_pass的方法
這篇文章主要介紹了nginx location中多個(gè)if里面proxy_pass的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題
本文主要介紹了Nginx配置動(dòng)態(tài)代理后通過curl訪問報(bào)403問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié)
rewrite功能就是,使用nginx提供的全局變量或自己設(shè)置的變量,結(jié)合正則表達(dá)式和標(biāo)記位實(shí)現(xiàn)URL重寫以及重定向,這篇文章主要介紹了nginx中的正則表達(dá)式及l(fā)ocation和rewrite總結(jié),需要的朋友可以參考下2023-12-12
Nginx服務(wù)器中限制連接數(shù)與限制請(qǐng)求的模塊配置教程
這篇文章主要介紹了Nginx服務(wù)器中限制連接數(shù)與限制請(qǐng)求的模塊配置教程,分別為limit conn模塊與limit req模塊的相關(guān)用法講解,需要的朋友可以參考下2016-01-01

