13 分で読めます
リダイレクトのステータスコード解説:301・302・307・308
すべての 3xx ステータスコードの意味を解説します。301、302、303、307、308 の違いを、恒久的か一時的か、メソッドの扱い、キャッシュ、SEO への影響で比較し、nginx、Apache、PHP の設定例も紹介します。
記事を読む無料のリダイレクトツール
URL が恒久的にリダイレクトしているのか、一時的にリダイレクトしているのかを確認できます。TrueURL はすべてのホップを調べ、検索エンジンがその移動を恒久的なものとして扱うかどうかを判定します。
Enter を押してチェック
Cloudflare のエッジは常に証明書を検証するため、この設定で検証を省略することはできません。証明書の問題は結果に表示されます。
最初のリクエストで送信されます(最大 16 KB)。Content-Type ヘッダーを指定しない限り、JSON のボディは application/json として、それ以外はフォームとして送信されます。
1〜50 の範囲で指定します。ブラウザーは 20 ホップで停止します。
サイトによっては、スマートフォン、クローラー、リンクプレビュー用ボットをそれぞれ異なる方法でリダイレクトします。
チェーン内のすべてのリクエストで送信されます。
カスタムヘッダーはありません。
このヘッダーを送信するには値を入力してください。ヘッダーの値は保存されません。
HTML ページ内の <meta http-equiv="refresh"> タグと Refresh ヘッダーをたどります。
ページのスクリプト内にある location.href = "…" のような、単純で無条件のリダイレクトをたどります。
設定はこのブラウザーに保存されます。Cookie、ヘッダーの値、POST ボディは保存されません。
ステータスコードは、それがどのような移動なのかを、サーバーが検索エンジンに伝える手段です。恒久的なリダイレクト(301 または 308)は、古い URL がもう戻らないことを示します。そのため検索エンジンは新しい URL をインデックスし、リンクなどのシグナルを新しい URL に集約します。一時的なリダイレクト(302、303、307)は、古い URL がいずれ戻ってくることを示すため、通常は古い URL がインデックスに残ります。
訪問者にはこの違いがまったくわからないため、誤ったステータスコードが何か月も気づかれないままになることがあります。多くのツールは、特に指定しない限り一時的なリダイレクトを返します。PHP の header('Location: ...')、Express の res.redirect()、Apache の Redirect ディレクティブは、いずれもデフォルトで 302 を返します。
TrueURL は、最初のホップだけでなく、チェーンのすべてのホップをチェックします。
301 と 308 はどちらも恒久的なリダイレクトで、Google は両者を同じように扱います。違いはリクエストメソッドにあります。301 の後、ブラウザーは POST を GET に変えることがありますが、308 ではメソッドとボディが必ず維持されます。通常のページには 301 を、POST リクエストを受け取り続ける必要がある API エンドポイントやフォームの送信先には 308 を使います。一時的なリダイレクトの 2 つも同じ関係で、302 ではメソッドが変わることがあり、307 では決して変わりません。
すべての 3xx コードの詳しい比較は、「リダイレクトのステータスコード解説」をご覧ください。
それ以外、特にサイト移転や URL の変更では、301 を使用してください。
13 分で読めます
すべての 3xx ステータスコードの意味を解説します。301、302、303、307、308 の違いを、恒久的か一時的か、メソッドの扱い、キャッシュ、SEO への影響で比較し、nginx、Apache、PHP の設定例も紹介します。
記事を読む上の入力欄に古い URL を入力してください。TrueURL はリダイレクトを自動でたどらずにリクエストを送り、すべてのホップの正確なステータスコードを表示します。コマンドラインの場合、curl -I https://example.com/old-page は -L を付けない限り最初のレスポンスしか表示せず、meta refresh や JavaScript リダイレクトも検出できません。curl のオプションについては、ガイド「URL リダイレクトの確認方法」で解説しています。
Google は、301 や 302 などのサーバーサイドリダイレクトで PageRank が失われることはないと説明しています。異なるのは正規化のシグナルです。301 は新しい URL をインデックスするよう Google に伝え、302 は古い URL を維持するよう示唆します。通常、両方のページが再クロールされると、検索順位は新しい URL に落ち着きます。
Google は少なくとも 1 年間はリダイレクトを維持するよう推奨していますが、無期限に残しておくほうが安全です。古いリンク、ブックマーク、他サイトからの参照は、何年にもわたって古い URL を使い続けるからです。リダイレクトルールを残しておくコストはほとんどかかりません。
よくある原因は、デフォルトで 302 を返すプラグインやフレームワーク、自分のルールより先に実行される CDN やホスティングのルール、キャッシュされた古いレスポンスなどです。各ホップを確認してください。302 を返しているホストやパスが、自分のルールで処理しているものと異なる場合は、別のレイヤーがそのリダイレクトを追加しています。
はい。ブラウザーは 301 や 308 のリダイレクトを長期間、多くの場合はキャッシュが消去されるまで保持することがあります。そのため、誤った 301 を一度たどった訪問者には、その誤りが残り続けることがあります。新しいルールをテストする間は 302 か短い Cache-Control: max-age を使い、正しく動作することを確認してから 301 に切り替えましょう。TrueURL はレスポンスをキャッシュしないため、常にサーバーが現在返している内容を表示します。
SEO の面では違いはなく、Google は両者を同じように扱います。308 のほうが適しているのは、リクエストメソッドを維持する必要がある場合だけです。たとえば、POST リクエストを受け取る API エンドポイントなどです。ごく古いクライアントの中には 308 を理解できないものもあるため、ウェブページには引き続き 301 が安全なデフォルトです。
トップページが本当に最適な代替ページである場合に限ります。Google は、削除したページからトップページへのリダイレクトをソフト 404 として扱うことがあります。最も内容の近いページにリダイレクトするか、該当するページがなければ 410 Gone または 404 Not Found を返してください。