2分で読了エンジニアリング

URL リダイレクトの種類: 301、302、307、308 など

あらゆる URL リダイレクトの種類を解説します - 301、302、303、307、308、meta refresh、JavaScript - それぞれの動作、SEO への影響、使い分けの方法。

Marius Voß
DevRel · edge infra
URL リダイレクトの種類(301、302、303、307、308、meta refresh、JavaScript)をサーバーサイドとクライアントサイドの 2 つのファミリーにグループ分けして Elido ブランドパレットで表現した図

URL リダイレクトには 301 対 302 の議論が示す以上の種類があり、誤った選択をすると静かに速度やランキングを失うことになります。2 つのファミリーに分かれています。サーバーサイドの HTTP リダイレクトはページが読み込まれる前にサーバーが返すステータスコードです - 301302303307308。クライアントサイドのリダイレクトはページが読み込まれた後にブラウザで発生します - meta refresh タグまたは JavaScript によるホップ。サーバーサイドはユーザーとクローラーの双方にとって高速でクリーンです。クライアントサイドは低速で効果が弱く、サーバーが手の届かない場所にある場合にのみ使用します。

私はリダイレクトパスを担当しているので、具体的な内容に絞ります。各種類がネットワーク上で何を行うか、検索エンジンがどう読み取るか、そして実際にどれを使うべきか。最もよく使う 2 つの詳細については301 対 302 リダイレクトでそのペアを詳しく解説しています。この記事は全体マップです。

最初に短く結論をまとめます。恒久的な移動には 301、一時的な移動には 302、POST を維持する必要がある場合はメソッド保持型の 308/307 を追加し、サーバーを設定できない場合を除きクライアントサイドの選択肢は避けてください。

リダイレクトの 2 つのファミリー

リダイレクトとは別の場所へ移動する指示に過ぎませんが、その指示がどこにあるかによって動作のすべてが変わります。

サーバーサイドのリダイレクトは、ページコンテンツが送られる前にサーバーが「ここにはない、あちらへ」と答えるものです。ブラウザはステータスコードと Location ヘッダーを受け取り、すぐに移動します。元の URL ではコンテンツが読み込まれないため、高速で明確です。クライアントサイドのリダイレクトはその逆です。元のページが完全に読み込まれた後、初めて meta タグまたはスクリプトが訪問者を次の場所へ送ります。つまりページ読み込みの無駄、視覚的なちらつき、そして検索エンジンへの弱いシグナルが発生します。検索エンジンはリダイレクトに気づくためにページを読み込み、場合によっては実行する必要があります。サーバーサイドのコードの正式な定義は RFC 9110 にあり、実際のブラウザの動作は MDN の HTTP リダイレクトガイドに記載されています。

「ページの前か、ページの後か」というこの 1 つの区別が、この記事全体を通じて「できる限りサーバーサイドのリダイレクトを使用してください」という話に戻ってくる理由です。

リダイレクトの 2 つのファミリー: ページ読み込み前に実行される高速でクローラーフレンドリーなサーバーサイドリダイレクトと、ページ読み込み後に実行される低速で効果の弱いクライアントサイドの meta refresh または JavaScript リダイレクト

HTTP ステータスコードのリダイレクト

これが本物のリダイレクトです。サーバーが 3xx の範囲で返します。重要なものは 5 つです。

コード意味恒久的かメソッド保持か代表的な用途
301恒久的に移動はい保証なし最終的な移動、サイト移行、HTTPS への切り替え
302見つかったいいえ保証なし一時的な移動、編集可能なリンク、A/B テスト
303他を参照いいえGET を強制フォーム後の結果ページへのリダイレクト
307一時的なリダイレクトいいえはいPOST または API エンドポイントでの一時的な移動
308恒久的なリダイレクトはいはいメソッドを維持する必要がある恒久的な移動

表を整理する 2 つの軸は恒久性とメソッド処理です。恒久性は SEO の軸です。301308 は恒久的であるため、検索エンジンはランキングシグナルを引き継ぎ、ターゲットを正規として扱います。一方 302303307 は一時的であり、元の URL がインデックスに残ります。メソッド処理はエンジニアリングの軸です。307308 は HTTP メソッドを厳密に保持するため POSTPOST のままですが、301302 は歴史的に GET へのドリフトを許容してきました。303 は特殊で、フォーム送信後に GET を強制するために作られたものです。ページを更新してもデータが再送信されないようにします。Google 自身のリダイレクトドキュメントは、恒久的なコードを正規化シグナルとして扱うことを確認しています。

GET リクエストである日常的なウェブリンクにとって、メソッドの軸は消え、恒久的か一時的かの選択だけが残ります。これがまさに 301 対 302 の判断です。

クライアントサイドのリダイレクト: Meta Refresh と JavaScript

サーバーを設定できない場合、ブラウザレベルの 2 つの選択肢が残りますが、どちらも妥協です。

meta refresh はページのヘッダーにある HTML タグで、指定した遅延後に新しい URL を読み込むようブラウザに指示します。「5 秒後にリダイレクトされます」というパターンです。機能しますが、ページはすでに読み込まれてから実行されるため低速で、検索エンジンには一貫性なく読み取られます。即時の meta refresh は通常恒久的なリダイレクトとして扱われますが、遅延のあるものは曖昧でソフト 404 と読み取られる可能性があります。JavaScript リダイレクトはさらに弱く、クローラーがスクリプトを実行した場合にのみ機能します。Google は JavaScript をレンダリングしますが遅延があり、多くの他のクローラーはまったく実行しないため、リダイレクトが完全に見逃される可能性があります。

選択肢の正直なランキングは単純です。最初にサーバーサイドの 3xx、HTML は制御できてもサーバーは制御できない場合のみ meta refresh、それ以外何も制御できない場合の最終手段として JavaScript リダイレクト。これはマネージドなショートリンクには当てはまりません。ショートリンクは常にサーバーサイドリダイレクトを使用します。クライアントサイドの手法は、リダイレクト設定のない静的ホストのような状況のためのものです。

どのリダイレクトを使うべきか

1 回で判断できるよう整理します。

  • 恒久的な移動、通常のリンク: 301。完全なランキング引き継ぎ、正規として扱われます。
  • 一時的な移動、通常のリンク: 302。元の URL をインデックスに残し、リンクを編集可能に保ちます。
  • POST または API コールを伴う移動: 恒久的には 308、一時的には 307 を使用してメソッドを維持します。
  • フォーム送信後: 303、ページを更新してもフォームが再送信されないようにします。

4 つすべての背後にあるメタルール: ステータスコードを移動の実態に合わせてください - 恒久的か、そしてメソッドが重要かどうか。このペアを誤るとリダイレクトが静かにランキングを失うか、フォームを壊します。

恒久的対一時的および GET 対メソッド保持を正しいリダイレクトコードにマッピングする意思決定ガイド: 301、302、307、308、フォーム後の 303 ウェブサーバーを手動設定せずに正しく動作させたい場合は、[Elido ワークスペースを無料で開始](/pricing)してリダイレクトをリンク層に任せてください。

ショートリンクが使うリダイレクト

マネージドなショートリンクはサーバーサイドのリダイレクトです。それには十分な理由があります - 高速でクローラーフレンドリーなファミリーだからです。興味深い選択はどのコードかという点であり、ほとんどのショートリンクへの答えは 302 です。

SEO 的にはおかしく聞こえますが、ショートリンクの目的を思い出してください。302 はリンクを編集可能に保ちます。印刷や共有後でも向き先を変えられます。また毎回のクリックがサーバーに届くため、分析が正確に保たれます。どちらもハードキャッシュされた 301 では犠牲になるものです。ブラウザキャッシュの落とし穴を含む詳細な理由は301 対 302 リダイレクトにあり、エッジでのリダイレクト解決の仕組みはURL 短縮サービスの仕組みで解説しています。コードを問わず適用される 1 つのルール: ホップを 1 回に抑えること。別のリダイレクトを指すリダイレクトはクロールバジェットとレイテンシを無駄にし、ショートリンクが本来保持するSEO を最速で損なう方法です。

全体像は一文でまとめられます。本物のリダイレクトにはサーバーサイドのコード、SEO には恒久的対一時的、GET 以外のリクエストにはメソッド保持バリアント、サーバーが使えない場合のみクライアントサイドの手法。移動の実態に合わせて選び、チェーンを 1 ホップに抑えれば、リダイレクトは意図通りに機能します。

ブログの関連記事

よくある質問

URL リダイレクトの主な種類は何ですか?

2 つのファミリーがあります。サーバーサイドの HTTP リダイレクトはサーバーが返すステータスコードです: 301(恒久的)、302(一時的)、303(他を参照、GET を強制)、307(一時的、メソッド保持)、308(恒久的、メソッド保持)。クライアントサイドのリダイレクトはページが読み込まれた後にブラウザで発生します: meta refresh HTML タグまたは JavaScript によるロケーション変更。サーバーサイドのリダイレクトはユーザーと検索エンジンの両方にとって高速でクリーンです。クライアントサイドは低速で効果が弱く、サーバーを制御できない場合にのみ使用します。

301 リダイレクトと 308 リダイレクトの違いは何ですか?

どちらも恒久的であるため、検索エンジンに対して目的地が新しい正規 URL であることを伝え、ランキングシグナルを引き継ぎます。違いは HTTP メソッドの扱いです。301 は歴史的にメソッドの変更を許容していましたが(リダイレクト先で POST が GET になる場合がありました)、308 はメソッドとリクエストボディを厳密に保持します。GET リクエストである通常のリンクにとっては動作は同じです。308 が重要なのは、POST がそのまま POST でなければならない API やフォーム送信の場面です。

307 リダイレクトはどのような場合に使用しますか?

307 は厳密な一時的リダイレクトです。302 と同じ役割(現時点では別の場所へ送り、元の URL はインデックスに残す)を持ちますが、リクエストメソッドが保持されることを保証するため、POST は POST のまま維持されます。GET 以外のリクエストを受け取る API やフォームハンドラなどのエンドポイントで一時的に移動する際に使用してください。通常の一時的なリンクリダイレクトであれば、302 と 307 は互換性があります。

meta refresh リダイレクトは SEO に悪影響がありますか?

サーバーサイドのリダイレクトより効果が弱く、選択肢がある場合は避ける価値があります。meta refresh はページが読み込まれた後にブラウザで実行されるため、ユーザーにとって遅く、検索エンジンへのシグナルとしても信頼性が低くなります。Google は即時の meta refresh を恒久的なリダイレクトとして解釈するとしていますが、遅延のあるものは曖昧であり、ソフト 404 などとして扱われる可能性があります。サーバーから 301 または 302 を返せるなら、そちらを使用してください。

JavaScript リダイレクトは SEO に機能しますか?

機能することはありますが、最も信頼性の低い選択肢です。JavaScript リダイレクトはクローラーがスクリプトを実行した場合にのみ機能します。Google は JavaScript をレンダリングしますが遅延があり、他の多くのクローラーは実行しません。そのためリダイレクトが見逃されたり、遅れて認識されたりする可能性があります。JavaScript リダイレクトはサーバーを一切制御できず、meta refresh も使えない場合にのみ使用してください。デフォルトではなく最終手段です。

どのリダイレクトの種類を使えばよいですか?

コードを実態に合わせて選んでください。恒久的な移動には 301(POST を維持する必要がある場合は 308)を使用します。一時的な移動には 302(GET 以外のメソッドには 307)を使用します。ほとんどのショートリンク(編集可能な GET リダイレクト)のデフォルトは 302 です。リンクを変更可能に保ち、分析を正確に保てるからです。サーバーをまったく制御できない場合にのみ、クライアントサイドの meta refresh や JavaScript リダイレクトを使用してください。

Elidoを試す

URLを貼り付けて短縮リンクを取得

登録不要。リンクは30日間有効。永久に保存するには登録してください。

Free、登録不要 · 1日あたり2件

Elidoを試す

EUホスティングのURL短縮サービス。カスタムドメイン、詳細な分析、オープンAPI付き。無料プラン - クレジットカード不要。

タグ
types of redirects
url redirect types
301 redirect
308 redirect
meta refresh redirect
javascript redirect

続きを読む