2013-07-07 25 views

risposta

102

La differenza fondamentale tra i due è che RedirectPermanent invia un browser HTTP 301 (Spostato in modo permanente) codice di stato che Redirect invierà un codice di stato HTTP 302.

Utilizzare RedirectPermanent se la risorsa è stata spostata in modo permanente e non sarà più accessibile nella posizione precedente. La maggior parte dei browser memorizza nella cache questa risposta ed esegue automaticamente il reindirizzamento senza richiedere nuovamente la risorsa originale.

Utilizzare Redirect se la risorsa potrebbe essere disponibile nella stessa posizione (URL) in futuro.

Esempio

Diciamo che avete gli utenti nel sistema. Hai anche un'opzione per eliminare gli utenti esistenti. Il tuo sito web ha una risorsa /user/{userid} che visualizza i dettagli di un determinato utente. Se l'utente è stato cancellato, è necessario reindirizzare alla pagina /user/does-not-exist. In questo caso:

Se l'utente mai essere ripristinato di nuovo, si dovrebbe usare RedirectPermanent modo il browser può passare direttamente a /user/does-not-exist nelle richieste successive, anche se l'URL punta a /user/{userid}.

Se l'utente potrebbe non essere cancellato in futuro, è necessario utilizzare un normale Redirect.

+3

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

+0

Grazie, è una buona risposta . Mi aiuta! – IFrizy

9

RedirectPermanent è 301 e Redirect è 302 codice di stato

+7

Per riferimento, i browser potrebbero ricordare il 301 e non raggiungere mai l'URL originale se lo desiderano, mentre un 302 indica che dovrebbero ricontrollare ogni volta se il reindirizzamento è ancora lì. Le implementazioni effettive possono naturalmente variare, ma questo è l'intento dietro 301 e 302 –

0

Invia codici di risposta diversi al browser. 301 è un reindirizzamento permanente, 302 a uno temp. L'effetto finale è lo stesso, ma se il cliente vuole indicizzare i link (il client più comune che fa questo sarà motori di ricerca), un reindirizzamento permanente dice al client di aggiornare i suoi record per ignorare il vecchio link e iniziare a usare quello nuovo . Un reindirizzamento temporaneo dice al client che la pagina sta reindirizzando per ora, ma non per eliminare il vecchio collegamento dal suo database di indicizzazione