2013-07-07 77 views

回答

102

兩者之間的基本區別是,RedirectPermanent發送瀏覽器的HTTP 301(永久移動)的狀態碼,而Redirect將發送HTTP 302狀態代碼。

使用RedirectPermanent如果資源已被永久刪除,將不再是先前的位置訪問。大多數瀏覽器都會緩存此響應並自動執行重定向,而無需再次請求原始資源。

使用Redirect如果資源可能會在未來的同一位置(URL)可用。

比方說,你在你的系統中的用戶。您還可以選擇刪除現有用戶。您的網站有一個資源/user/{userid},顯示給定用戶的詳細信息。如果用戶已被刪除,則必須重定向到/user/does-not-exist頁面。在這種情況下:

如果用戶將永遠再次恢復,你應該使用RedirectPermanent這樣瀏覽器就可以直接去/user/does-not-exist在後續請求,即使該URL指向/user/{userid}

如果用戶可以是未刪除在未來的某個時候,你應該使用常規Redirect

+3

http://stackoverflow.com/questions/1393280/http-redirect-301-vs-302-permanent-vs-temporary – user1778606

+0

謝謝,這很好的答案意圖。它幫助我! – IFrizy

9

RedirectPermanent是301和Redirect是302狀態碼

+7

僅供參考,瀏覽器可以記住301和從不打,如果他們又渴望的原始URL的客戶端,而302表示如果重定向仍然存在,他們應該每次重新檢查一次。實際的實現當然可以變化,但是這背後的301和302 –

0

他們向瀏覽器發送不同的響應代碼。 301是永久重定向,302是臨時重定向。最終效果是一樣的,但如果客戶想要索引鏈接(最常見的客戶端是搜索引擎),那麼永久重定向會告訴客戶端更新其記錄以忽略舊鏈接並開始使用新鏈接。一個臨時重定向告訴該網頁重定向現在,而不是從它的索引數據庫中刪除舊的鏈接