クライアントは異なる動作をするはずですか?どうやって?
クライアントは異なる動作をするはずですか?どうやって?
回答:
ステータス301は、リソース(ページ)が永続的に新しい場所に移動されることを意味します。クライアント/ブラウザーは、元の場所を要求しようとするのではなく、今後は新しい場所を使用する必要があります。
ステータス302は、リソースが一時的に別の場所にあることを意味し、クライアント/ブラウザは引き続き元のURLをリクエストする必要があります。
検索エンジンスパイダーは、Webページの応答ヘッダーで301ステータスコードを検出すると、このWebページが存在しないことを理解し、応答でロケーションヘッダーを検索して新しいURLを選択し、インデックス付きURLを新しいものに置き換えて、ページランクも転送します。 。
したがって、検索エンジンは、存在しないすべてのインデックス付きURL(301が見つかりました)を新しいURLで更新します。これにより、古いWebページのトラフィック、ページランクが保持され、新しいURLに転送されます(古いWebページのトラフィックが失われることはありません)。
ブラウザー:ブラウザーが301ステータスコードを検出した場合、古いURLと新しいURLのマッピングをキャッシュします。クライアント/ブラウザーは、元の場所を要求しようとせず、キャッシュがクリアされない限り、今後は新しい場所を使用します。
検索エンジンスパイダーがWebページの302ステータスを見つけると、一時的に新しい場所にリダイレクトし、両方のページをクロールします。古いWebページのURLはまだ検索エンジンデータベースに存在しており、常に古い場所をリクエストしてクロールしようとします。クライアント/ブラウザは引き続き元の場所を要求しようとします。
asp.net c#に実装する方法と、検索エンジンへの影響についての詳細-http ://www.dotnetbull.com/2013/08/301-permanent-vs-302-temporary-status-code-aspnet -csharp-Implementation.html
301を使用する場合、クローラーはこれを考慮に入れてPageRankを転送するため、検索エンジンでのインデックス作成には、主に301と302が重要です。
詳細については、Peter Leeの回答を参照してください。
301は、要求されたリソースに新しい永続的なURIが割り当てられており、このリソースへの今後の参照は、返されたURIの1つを使用して行う必要があることです。
302は、リクエストされたリソースが一時的に別のURIに存在することです。
リダイレクションは時々変更される可能性があるため、クライアントは今後のリクエストに引き続きRequest-URIを使用する必要があります。
この応答は、Cache-ControlまたはExpiresヘッダーフィールドで示されている場合にのみキャッシュできます。
<?php header("location: http://example.com/new.php"); ?>
を含むファイルold.phpとファイルnew.php を作成<?php echo 'I am new'; ?>
し、リンクに移動します。「I am new」というテキストをリダイレクトして表示します。その後にold.phpでコードを置き換える<?php echo 'I am old'; ?>
ともに行くのリンク。「私は古い」というテキストが表示されます。old.phpで301リダイレクトを実行した場合、old.phpのコードを変更した後でも「I am new」というテキストが表示されます。
webcomic.com/latest
リダイレクトされる場合webcomic.com/some-comic-title
、ブラウザは常に「some-comic-title」にリダイレクトされます。次のコミックが発行され、「最新」が「another-comic-title」にリダイレクトされる場合でも、これは302の方が優れています。
301リダイレクトは無期限にキャッシュされます(少なくとも一部のブラウザでは)。
つまり、301を設定してそのページにアクセスすると、リダイレクトされるだけでなく、そのリダイレクトがキャッシュされます。
再度そのページにアクセスすると、ブラウザー*はそのURLを要求することさえせず、キャッシュされたリダイレクトターゲットに移動するだけです。
キャッシュでリダイレクトされた訪問者の301を元に戻す唯一の方法は、元のURLにリダイレクトすることです**。その場合、ブラウザはループに気づき、最後に実際に入力されたURLを要求します。
明らかに、完全に制御されていないFacebookやその他のリソースに301することを決定した場合、これはオプションではありません。
残念ながら、多くのホスティングプロバイダーは、301リダイレクトを行う「リダイレクト」と呼ばれる機能を管理インターフェイスに提供しています。これを使用してドメインをFacebookに一時的にリダイレクトするページを間もなく開始する場合、基本的には失敗します。
* ブラウザがHTTP 301をキャッシュする期間は、少なくともChromeとFirefox です。。Chrome 45で試してみました。編集:Mac上のSafari 7.0.6もキャッシュします。ブラウザの再起動は役に立ちませんでした(リンクは、Windows上のSafari 5では役立つと言っています)。
**私はjavascriptを試しましたwindow.location = ''
が、それはほとんどの場合に適用できるソリューションであるため、機能しません。その結果、検出されない無限ループが発生します。ただし、php header('Location: new.url')
はループを壊します
結論:そのURLを二度と使用しないことが確実である場合にのみ、301を使用してください。通常、ルートディレクトリ(example.com/)にはありません