416

クライアントは異なる振る舞いをすることになっていますか? どのように?

4

6 に答える 6

615

ステータス 301 は、リソース (ページ) が新しい場所に完全に移動されたことを意味します。クライアント/ブラウザは、元の場所を要求しようとするのではなく、新しい場所を使用する必要があります。

ステータス 302 は、リソースが一時的に別の場所にあることを意味し、クライアント/ブラウザは元の URL を引き続き要求する必要があります。

于 2009-09-08T10:51:26.760 に答える
36

ほとんどの場合、301 対 302 は検索エンジンでのインデックス作成に重要です。検索エンジンのクローラーはこれを考慮し、301 を使用するときに PageRank を転送するためです。

詳細については、 Peter Lee の回答を参照してください。

于 2009-09-08T10:52:00.687 に答える
23

301 は、要求されたリソースに新しい永続的な URI が割り当てられており、このリソースへの今後の参照は、返された URI のいずれかを使用して行う必要があることを示します。

302 は、要求されたリソースが別の URI に一時的に存在することを意味します。

リダイレクトは場合によって変更される可能性があるため、クライアントは今後のリクエストに対して引き続き Request-URI を使用する必要があります。

この応答は、Cache-Control または Expires ヘッダー フィールドで示されている場合にのみキャッシュ可能です。

于 2009-09-08T10:50:26.523 に答える
21

301 リダイレクトは無期限にキャッシュされます (少なくとも一部のブラウザーでは)。

つまり、301 を設定すると、そのページにアクセスすると、リダイレクトされるだけでなく、そのリダイレクトがキャッシュされます。

そのページに再度アクセスすると、ブラウザー* はその URL を要求することさえせず、キャッシュされたリダイレクト ターゲットに移動するだけです。

キャッシュでリダイレクトされた訪問者の 301 を元に戻す唯一の方法は、元の URL** にリダイレクトし直すことです。その場合、ブラウザはループに気付き、最終的に入力された URL を実際に要求します。

明らかに、完全に制御できない Facebook やその他のリソースに 301 を送信することにした場合、それはオプションではありません。

残念ながら、多くのホスティング プロバイダーは、301 リダイレクトを行う「リダイレクト」と呼ばれる機能を管理インターフェイスで提供しています。これを使用してドメインを facebook に一時的にリダイレクトし、近日公開予定のページとして使用している場合、基本的に失敗です。

* How long do browsers cache HTTP 301s?によると、少なくとも Chrome と Firefox 。. Chrome 45 で試してみました。編集: Mac 上の Safari 7.0.6 もキャッシュします。ブラウザを再起動しても問題は解決しませんでした (Link によると、Windows 上の Safari 5 では有効であるとのことです)。

window.location = ''**ほとんどの場合に適用できるソリューションであるため、javascript を試しましたが、機能しません。検出されない無限ループが発生します。ただし、phpheader('Location: new.url')はループを壊します

結論: 301 は、その URL を二度と使用しないことが確実な場合にのみ使用してください。通常、ルート ディレクトリ (example.com/) にはありません。

于 2015-09-15T17:17:24.220 に答える
6

301 の主な問題は、サーバー レベルでリダイレクトを無効にした場合でも、ブラウザーがリダイレクトをキャッシュすることです。

短いメンテナンス ウィンドウでリダイレクトを有効にする場合は、常に 302 を使用することをお勧めします。

于 2015-10-12T10:23:07.080 に答える