Redirect()
との違いは何ですかRedirectPermanent()
。Redirect()
いくつかの記事を読んだことがありますが、いつandを使用する必要があるのか わかりませんRedirectPermanent()
。例を示していただけますか。
3 に答える
2 つの基本的な違いはRedirectPermanent
、ブラウザーにHTTP 301
(Moved Permanently) ステータス コードRedirect
を送信するのに対し、ブラウザーはステータス コードを送信するHTTP 302
ことです。
RedirectPermanent
リソースが完全に移動され、以前の場所にアクセスできなくなる場合に使用します。ほとんどのブラウザーは、この応答をキャッシュし、元のリソースを再度要求することなく自動的にリダイレクトを実行します。
Redirect
リソースが将来同じ場所 (URL) で利用可能になる可能性がある場合に使用します。
例
システムにユーザーがいるとしましょう。既存のユーザーを削除するオプションもあります。Web サイトには/user/{userid}
、特定のユーザーの詳細を表示するリソースがあります。ユーザーが削除されている場合は、ページにリダイレクトする必要があり/user/does-not-exist
ます。この場合:
ユーザーが二度と復元されない場合は、 を使用して、URL が を指していても、後続のリクエストでRedirectPermanent
ブラウザーが直接アクセスできるようにする必要があります。/user/does-not-exist
/user/{userid}
ユーザーが将来復元される可能性がある場合は、通常のRedirect
.
RedirectPermanent
301 およびRedirect
302 ステータス コード
これらは、異なる応答コードをブラウザーに送信します。301 は永続的なリダイレクトで、302 は一時的なリダイレクトです。最終的な効果は同じですが、クライアントがリンクのインデックスを作成したい場合 (これを行う最も一般的なクライアントは検索エンジンです)、永続的なリダイレクトにより、古いリンクを無視して新しいリンクの使用を開始するようにレコードを更新するようにクライアントに指示されます。 . 一時リダイレクトは、ページが現在リダイレクト中であることをクライアントに伝えますが、インデックス データベースから古いリンクを削除することはありません。