web中狀態碼301和302的區別


web中狀態碼301和302的區別

  總的區別就是:302重定向只是暫時的重定向,搜索引擎會抓取新的內容而保留舊的地址,因為服務器返回302,所以,搜索搜索引擎認為新的網址是暫時的。而301重定向是永久的重定向,搜索引擎在抓取新的內容的同時也將舊的網址替換為了重定向之后的網址。

  首先,對於301和302狀態碼的定義如下:

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

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

字面上的區別就是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/$1 permanent;
}

接上redirect就代表302跳

//把來自veryyoung.me的請求302跳到 www.veryyoung.me
if ($host != 'veryyoung.me') {
    rewrite ^/(.*)$ http://www.veryyoung.me/$1 redirect;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM