間いただきまし違い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
。
RedirectPermanent
2回目にクリックすると、コントローラーのアクションがスキップされ、他の場所にリダイレクトされた場合、元の関数でブレークポイントに到達しないため、デバッグ中に煩わしい場合があることに注意してください。これは、クリックするたびにキャッシュを空にしない限りです。
RedirectPermanent
は301で、Redirect
は302ステータスコードです。