1. 程式人生 > 其它 >http中的301和302的區別

http中的301和302的區別

技術標籤:大運維大前端httpnginx

文章目錄


HTTP 響應程式碼全部列表

301 Moved Permanently

被請求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用本響應返回的若干個 URI 之一。如果可能,擁有連結編輯功能的客戶端應當自動把請求的地址修改為從伺服器反饋回來的地址。除非額外指定,否則這個響應也是可快取的。

302 Found

請求的資源現在臨時從不同的 URI 響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址傳送以後的請求。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可快取的。

http 協議的 301 和 302 狀態碼都代表重定向。瀏覽器請求一個URL收到這兩個狀態碼時,最終都會顯示和跳轉到重定向的URL。

301

適合永久重定向

301比較常用的場景是使用域名跳轉。

server {
    listen       8090;
    server_name  localhost;

   location /test4 {
    return 301 https://www.baidu.com;
   }
    
    # 或者
    location /test4 {
     rewrite ^/(.*)$ https://www.baidu.com permanent;
    }
}

在這裡插入圖片描述

302

用來做臨時跳轉

比如未登陸的使用者訪問使用者中心重定向到登入頁面。

訪問404頁面會重新定向到首頁。

server {
    listen       8090;
    server_name  localhost;

   location /test4 {
    return 302 https://www.baidu.com;
   }
    # 或者
    location /test4 {
     rewrite ^/(.*)$ https://www.baidu.com redirect;
    }
}

在這裡插入圖片描述

區別:

302是臨時重定向,搜尋引擎第一次會去新網址抓取新的內容。搜尋搜尋引擎認為新的網址是暫時的,再次獲取時可能會索引新網址和舊網址的內容。

301重定向是永久的重定向,搜尋引擎在抓取新網址內容的同時將舊網址替換成新網址的內容,所以每次都會去獲取新網址的內容。