關於http301與302的技術討論


@浪跡天涯 算法

301轉向:是當用戶或搜索引擎向網站服務器發出瀏覽請求時,服務器返回的HTTP數據流中頭信息(header)中的狀態碼的一種,表示本網頁永久性轉移到另外一個地址。 瀏覽器

302重定向又稱之爲302表明暫時性轉移(Temporarily Moved ), 也被認爲是暫時重定向(temporary redirect),一條對網站瀏覽器的指令來顯示瀏覽器被要求顯示的不一樣的URL,當一個網頁經歷太短期的URL的變化時使用。一個暫時重定向是一種服務器端的重定向,可以被搜索引擎蜘蛛正確地處理。 緩存

301重定向與302重定向的區別在於302重定向是暫時的重定向,搜索引擎會抓取新的內容而保留舊的網址。由於服務器返回302代碼,搜索引擎認爲新的網址只是暫時的。 服務器

301重定向是永久的重定向,搜索引擎在抓取新內容的同時也將舊的網址替換爲重定向以後的網址。 性能


@張洪保 網站

301的含義是「永久重定向」,而302的含義是「臨時重定向」
301 表明永久性轉移是網頁更改地址後對搜索引擎友好的最好方法,只要不是暫時搬移的狀況,都建議使用301來作轉址。 搜索引擎

因爲搜索引擎排名算法只是程序而不是人,在遇到302重定向的時候,並不能像人同樣的去準確斷定哪個網址更適當,這就形成了網址URL劫持的可能性。也就是說,一個不道德的人在他本身的網址A作一個302重定向到你的網址B,出於某種緣由, Google搜索結果所顯示的仍然是網址A,可是所用的網頁內容倒是你的網址B上的內容,這種狀況就叫作網址URL劫持。你辛辛苦苦所寫的內容就這樣被別人偷走了。 .net


@劉錫濤

你們都已經對基本的301跳轉和302跳轉作了解釋, 我從個人理解解答下。 索引

若是從便於搜索引擎友好的話固然是301最合適,通常狀況下非特地臨時性URL轉移,都儘可能用301跳轉,這樣的一個好處是搜索引擎會把該URL的PR值都帶到跳轉後的地址,而302跳轉早期被不少網站看成做弊手段,已經被多數搜索引擎重點盯查。 資源

而性能方面原則上301跳轉和302跳轉沒有多大差異,不過考慮到搜索引擎個案對待,也建議使用301跳轉,301跳轉搜索引擎是不對原地址進行訪問的,而302跳轉除了象@張洪保所講可能被劫持以外,還有可能會加大對服務器的URL請求數量。

搜索引擎對302跳轉進行判斷的時候,若是發現跳轉目標頁面URL更加複雜,就會返回來對原URL進行訪問,尋取一個簡單友好的地址,這樣無形會加劇服務器性能損耗,所以301跳轉要比302跳轉靠普也對服務器性能有保障。


@馮義軍

說法同@張洪保 如下是301和302狀態碼解釋:

301 Moved Permanently

  被請求的資源已永久移動到新位置,而且未來任何對此資源的引用都應該使用本響應返回的若干個 URI 之一。若是可能,擁有連接編輯功能的客戶端應當自動把請求的地址修改成從服務器反饋回來的地址。除非額外指定,不然這個響應也是可緩存的。
  新的永久性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,不然響應的實體中應當包含指向新的 URI 的超連接及簡短說明。
  若是這不是一個 GET 或者 HEAD 請求,所以瀏覽器禁止自動進行重定向,除非獲得用戶的確認,由於請求的條件可能所以發生變化。
  注意:對於某些使用 HTTP/1.0 協議的瀏覽器,當它們發送的 POST 請求獲得了一個301響應的話,接下來的重定向請求將會變成 GET 方式。

302 Found

  請求的資源如今臨時從不一樣的 URI 響應請求。因爲這樣的重定向是臨時的,客戶端應當繼續向原有地址發送之後的請求。只有在Cache-Control或Expires中進行了指定的狀況下,這個響應纔是可緩存的。   新的臨時性的 URI 應當在響應的 Location 域中返回。除非這是一個 HEAD 請求,不然響應的實體中應當包含指向新的 URI 的超連接及簡短說明。   若是這不是一個 GET 或者 HEAD 請求,那麼瀏覽器禁止自動進行重定向,除非獲得用戶的確認,由於請求的條件可能所以發生變化。   注意:雖然RFC 1945和RFC 2068規範不容許客戶端在重定向時改變請求的方法,可是不少現存的瀏覽器將302響應視做爲303響應,而且使用 GET 方式訪問在 Location 中規定的 URI,而無視原先請求的方法。狀態碼303和307被添加了進來,用以明確服務器期待客戶端進行何種反應。

相關文章
相關標籤/搜索