間いただきまし違いRedirect()とRedirectPermanent()。いくつかの記事を読んだことがありますがRedirect()、いつ使用する必要があるのかわかりませんRedirectPermanent()。例を挙げていただけますか。
回答:
2つの基本的な違いは、RedirectPermanentブラウザにHTTP 301(永続的に移動)ステータスコードRedirectを送信するのに対し、HTTP 302ステータスコードを送信することです。
RedirectPermanentリソースが永続的に移動され、以前の場所からアクセスできなくなる場合に使用します。ほとんどのブラウザはこの応答をキャッシュし、元のリソースを再度要求することなくリダイレクトを自動的に実行します。
使用Redirectリソースは、将来的には同じ場所(URL)で利用できる可能性がある場合。
例
システムにユーザーがいるとしましょう。既存のユーザーを削除するオプションもあります。Webサイトには、/user/{userid}特定のユーザーの詳細を表示するリソースがあります。ユーザーが削除されている場合は、/user/does-not-existページにリダイレクトする必要があります。この場合:
ユーザーが二度と復元されない場合は、URLがを指している場合でもRedirectPermanent、ブラウザーが/user/does-not-exist後続のリクエストで直接に移動できるようにする必要があります/user/{userid}。
ユーザーが将来復元される可能性がある場合は、通常のを使用する必要がありますRedirect。
RedirectPermanent2回目にクリックすると、コントローラーのアクションがスキップされ、他の場所にリダイレクトされた場合、元の関数でブレークポイントに到達しないため、デバッグ中に煩わしい場合があることに注意してください。これは、クリックするたびにキャッシュを空にしない限りです。
RedirectPermanentは301で、Redirectは302ステータスコードです。