Loading article…
ワールド ワイド ウェブでは、HTTP 301 は301 恒久的に移動のHTTP 応答ステータス コードです。これは恒久的なリダイレクトに使用され、この応答を返すリンクまたはレコードを更新する必要があることを意味します。新しいURL は、応答に含まれる場所フィールドに指定する必要があります。301 リダイレクトは、ユーザーを HTTP からHTTPSにアップグレードするためのベスト プラクティスと見なされています。
RFC 2616 [1]では次のように述べられている。
- クライアントにリンク編集機能がある場合は、リクエスト URL へのすべての参照を更新する必要があります。
- 特に指定がない限り、応答はキャッシュ可能です。
- リクエストメソッドが HEAD でない限り、エンティティには新しい URL へのハイパーリンクを含む小さなハイパーテキスト ノートが含まれている必要があります。
- GET または HEAD 以外のタイプのリクエストに対する応答として 301 ステータス コードが受信された場合、クライアントはリダイレクトする前にユーザーに確認する必要があります。
例
クライアントのリクエスト:
GET /index.php HTTP / 1.1
ホスト: www.example.org
サーバー応答:
HTTP / 1.1 301 恒久的に移動しました
場所: https://www.example.org/index.asp
.htaccess ファイルの使用
分散された .htaccess ファイルを使用して存在しないファイルまたはディレクトリの問題を修正するには:
301リダイレクト/calendar.html /Calendar/ 301リダイレクト/not_found.html /
以下は、 .htaccessファイルを使用して、先頭の「www」のない安全なアドレスに安全でない URL をリダイレクトする 例です。
RewriteEngineオンRewriteCond %{HTTPS}オフRewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{HTTPS}はRewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
になりますRewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://example.com/$1 [R,L]
静的 HTML
index.html ファイルを使用したカスタム ディレクトリ リダイレクト:
< meta http-equiv = "refresh" content = "0; url=/" />
< p >< a href = "/" >ホーム</ a ></ p >
プログラミング言語の使用
リダイレクトを印刷します( "https://example.com/newpage.html" );
PHPリダイレクトを使用する例を次に示します。
<?php
header ( "場所: https://example.com/newpage.html" , true , 301 );
exit ;
Express.js を使用してリダイレクトする方法の 1 つを次に示します。
app.all ( "/old/url" , ( req , res ) = > { res.redirect ( 301 , " /new/url" ) ; } );
キャッシュサーバー
nginx の設定も同様に簡単です:
場所/old/URL { return 301 '/new/URL' ; }
検索エンジン
BingとGoogleはどちらも、URLが永続的に変更され、近いうちに再度変更される予定がない場合は、検索エンジンの結果に表示されるページのURLを変更するために301リダイレクトを使用することを推奨しています。[2] [3]
技術的な詳細
HTTP 301 ステータス コードには、リダイレクトを実装および管理する際に開発者が認識しておくべき技術的なニュアンスがいくつかあります。
ブラウザの処理
- キャッシュ動作: 多くの Web ブラウザは 301 リダイレクトをキャッシュします。つまり、ユーザーのブラウザが 301 リダイレクトに遭遇すると、元の URL への後続のリクエストはサーバーに接続することなく自動的に新しい URL にリダイレクトされます。
- ブックマークの更新: ブラウザは、301 リダイレクトが発生した後、新しい URL を反映するためにブックマークを更新する場合があります。
サーバー側
- Apache : Apache には 301 リダイレクトを処理するための mod_alias と mod_rewrite があります。両方を使用すると、モジュールが他のモジュールのルールを尊重しないため、予期しない動作が発生することがよくあります。[4]
他のステータスコードとの比較
- 302 見つかりました: 301とは異なり、302ステータスコードは一時的なリダイレクトを示します。検索エンジンはSEO値を新しいURLに渡さない可能性があります。[5]
- 307 一時リダイレクト: 302 と同様ですが、リダイレクトされたリクエストが行われたときにメソッドと本文が変更されないことを保証します。
- 303 その他を参照: POST または他の非べき等リクエスト メソッドの結果が、GET を使用して取得する必要があるリソースである場合に使用されます。
場所ヘッダー
- 必須の組み込み: 301 リダイレクトが送信されるときは、常に新しい URL を「場所」フィールドに指定する必要があります。場所ヘッダーを省略すると、ブラウザが混乱し、予期しない動作が発生する可能性があります。
- 絶対 URL の使用: 相対 URL は一部のブラウザで受け入れられる場合もありますが、Location ヘッダーでは絶対 URL を使用するのが標準であり、すべてのユーザー エージェント間で一貫した動作が保証されます。
SEOへの影響
- リンクエクイティの転送:検索エンジンは通常、リンクエクイティ(または「リンクジュース」)の大部分をソースURLから301リダイレクトのターゲットURLに転送します。[6]
- インデックス作成の遅延: 検索エンジンがリダイレクトを認識し、それに応じてインデックスを更新するまでに遅延が生じる可能性があります。
よくある落とし穴
- 複数のリダイレクト: 301 リダイレクトを複数連続して使用すると (A から B、次に B から C)、ページの読み込み時間が長くなり、SEO の価値が低下する可能性があります。
- 混合コンテンツの問題: HTTP から HTTPS にリダイレクトする場合は、混合コンテンツの警告を防ぐために、ページ上のすべてのリソース (画像、スクリプト、スタイルシート) も HTTPS 経由で読み込まれるようにしてください。
参照
参考文献
- ^ Fielding; et al. (1999 年 6 月). 10.3.2 301 Moved Permanently. IETF. p. 61. sec. 10.3.2. doi : 10.17487/RFC2616 . RFC 2616.
- ^ 「サイト移動ツール」。Bing Web マスター ヘルプと使い方。
- ^ 「301 リダイレクト」。Googleウェブマスター ツール ヘルプ。
- ^ Apache .htaccess の 301 リダイレクト: mod_rewrite
- ^ SEO と HTTP ステータス コード: 包括的な分析
- ^ 301 リダイレクトの説明: SEO に与える影響
