一.官方說法
301,302 都是HTTP狀态的編碼,都代表着某個URL發生了轉移,不同之處在于:
301 redirect: 301 代表永久性轉移(Permanently Moved)。
302 redirect: 302 代表暫時性轉移(Temporarily Moved )。
二、詳細說明
字面上的差別就是301是永久重定向,而302是臨時重定向。 當然,他們之間也是有共同點的,就是使用者都可以看到url替換為了一個新的,然後送出請求。
301适合永久重定向
301比較常用的場景是使用域名跳轉。
比如,我們通路
http://www.baidu.com會跳轉到
https://www.baidu.com,發送請求之後,就會傳回301狀态碼,然後傳回一個location,提示新的位址,浏覽器就會拿着這個新的位址去通路。
注意: 301請求是可以緩存的, 即通過看status code,可以發現後面寫着from cache。
或者你把你的網頁的名稱從php修改為了html,這個過程中,也會發生永久重定向。
302用來做臨時跳轉
比如未登陸的使用者通路使用者中心重定向到登入頁面。
通路404頁面會重新定向到首頁。
##niginx 301/302配置
rewrite後面接上permenent就代表301跳
//把來自veryyoung.me的請求301跳到 www.veryyoung.me
if ($host != 'veryyoung.me') {
rewrite ^/(.*)$
http://www.veryyoung.me/$1permanent;
}
接上redirect就代表302跳
//把來自veryyoung.me的請求302跳到 www.veryyoung.me
redirect;
301重定向和302重定向的差別
302重定向隻是暫時的重定向,搜尋引擎會抓取新的内容而保留舊的位址,因為伺服器傳回302,是以,搜尋搜尋引擎認為新的網址是暫時的。
而301重定向是永久的重定向,搜尋引擎在抓取新的内容的同時也将舊的網址替換為了重定向之後的網址。