PR

【IT用語解説】リダイレクトとは?301・302の違いとURL転送の仕組みを初心者向けに解説

リダイレクトの記事アイキャッチ。案内標識のイラストとRedirectの文字。 IT-Skills

リダイレクトとは、あるURLへ来た人を、別のURLへ自動で案内する仕組みです。

たとえば、古い記事URLを開いたら新しい記事URLへ移動する、http://で開いたらhttps://へ切り替わる、といった場面で使われます。

リダイレクトは、Webサイト上の「移転しました。新しい住所はこちらです」という案内板のようなものです。

この記事では、リダイレクトの意味、HTTPでURLが切り替わる仕組み、301・302・307・308の違い、よくある用途、ループやチェーンの注意点を初心者向けに整理します。

スポンサーリンク

リダイレクトは新しいURLへの案内

リダイレクトは、旧URLや一時的に使えないURLへアクセスした利用者を、別のURLへ案内するために使います。ブラウザの画面上では、気づかないうちにアドレスバーのURLが変わっていることがあります。

MDNでは、URL redirectionはページやWebアプリなどに複数のURLを与える技術で、HTTPにはこのための特別なレスポンスがあると説明されています。まずは「古い住所に来た人を新しい住所へ案内する仕組み」と考えると理解しやすいです。

次の図では、古いURLに来た利用者が新しいURLへ案内される様子を見てください。今回は、単なる箱ではなく、Webサイトの移転案内としてイメージ化しています。

旧URLから新URLへ移転案内するリダイレクトのイメージ
リダイレクトは、古いURLへ来た人を新しいURLへ案内する仕組みです。

HTTPリダイレクトの仕組み

HTTPリダイレクトでは、サーバーが3xx系のステータスコードとLocationヘッダーを返します。ブラウザはそのレスポンスを受け取ると、Locationに書かれた新しいURLを開き直します。

次の図では、ブラウザが旧URLを開き、サーバーが移動先を返し、ブラウザが新URLを開く流れを確認してください。リダイレクトの中心は、3xxステータスコードとLocationヘッダーです。

ブラウザ、サーバー、Locationヘッダー、新URLの流れ
HTTPリダイレクトでは、3xxステータスコードとLocationヘッダーで移動先を伝えます。
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-page

HTTPの基本はHTTPとは?HTTPSとは?、URLの基本はURLとは?で確認できます。

301・302・307・308の違い

リダイレクトでよく見るのが、301、302、307、308です。大きく見ると、301と308は恒久的な移動、302と307は一時的な移動です。さらに、307と308はHTTPメソッドやリクエスト本文を変えない、という点が重要です。

次の図では、リダイレクトの種類を道路標識として見てください。「ずっと移転」なのか「一時的な迂回」なのかで、使うコードが変わります。

301、302、307、308の違いを道路標識で整理する図
301/308は恒久的な移動、302/307は一時的な移動として考えると整理しやすいです。
コード意味初心者向けの見方
301Moved PermanentlyこのURLは今後ずっと新しいURLへ移動
302Found一時的に別URLへ移動
307Temporary Redirect一時的に移動し、HTTPメソッドを変えない
308Permanent Redirect恒久的に移動し、HTTPメソッドを変えない

通常のWebページ閲覧では301と302をまず押さえれば十分です。フォーム送信やAPIのようにGET以外のリクエストが関係する場合は、307や308の意味が重要になります。

リダイレクトが使われる場面

リダイレクトは、URL変更だけでなく、HTTPS化、メンテナンス中の一時案内、フォーム送信後の完了ページ表示など、さまざまな場面で使われます。

次の図では、リダイレクトが使われる代表的な場面を地図のように整理しています。利用者から見ると「勝手にURLが変わった」ように見えますが、裏側では移動先を案内しています。

リダイレクトが使われる代表的な場面を地図で示す図
リダイレクトはURL変更、HTTPS化、一時的な迂回、送信後の完了画面などで使われます。
  • 古い記事URLから新しい記事URLへ案内する
  • http://からhttps://へ切り替える
  • example.comからwww.example.comへ統一する
  • メンテナンス中に一時ページへ案内する
  • フォーム送信後に完了画面へ移動する

リダイレクトとリンク、DNS、URL書き換えの違い

リダイレクトはリンクと似ていますが、利用者がクリックして移動するリンクとは違い、サーバーやページ側が自動で移動先を案内します。DNSとも違います。DNSはドメイン名をIPアドレスへ変換する仕組みで、ページ単位の移動先を案内するものではありません。

用語役割リダイレクトとの違い
リンク利用者がクリックして移動する入口自動移動ではない
DNSドメイン名をIPアドレスへ変換するページの移転案内ではない
URL書き換えサーバー内部でURLの扱いを変えるブラウザに移動を見せない場合がある
リダイレクト別URLへ自動で案内するブラウザが新URLを開き直す

DNSの基本はDNSとは何か?、ブラウザの役割はブラウザとは?であわせて確認できます。

リダイレクトで注意したいこと

リダイレクトは便利ですが、設定を間違えると利用者がページにたどり着けなくなります。特に注意したいのが、リダイレクトループ、長いリダイレクトチェーン、内部リンクの放置です。

次の図では、リダイレクトで避けたい迷子パターンを見てください。AからBへ案内したはずがBからAへ戻ると、ブラウザは終わらない移動を繰り返してしまいます。

リダイレクトループやチェーンなどの注意点を示す図
リダイレクトでは、ループ、長いチェーン、内部リンクの放置に注意します。
  • AからB、BからAへ戻るリダイレクトループを作らない
  • AからB、BからC、CからDのような長いチェーンを避ける
  • サイト内リンクはできるだけ新URLへ直接向ける
  • リダイレクト後のページが404にならないか確認する
  • HTTPからHTTPSへの統一で無限ループしないか確認する

MDNでも、リダイレクトごとに追加のHTTPリクエストが発生するため、使いすぎを避けるべきだと説明されています。内部リンクを直せる場合は、リダイレクトに頼らず新URLへ直接リンクしましょう。

ユーザーとして知っておきたい見方

リダイレクト自体は正常な仕組みです。ただし、ログイン画面や決済画面で知らないドメインへ移動した場合は注意が必要です。アドレスバーのドメインを確認し、怪しい移動先ではパスワードやカード情報を入力しないようにします。

キャッシュやCookieが原因で古いリダイレクトが残ったように見えることもあります。ページ移動がおかしいときは、別ブラウザで確認する、キャッシュを削除する、Cookieの影響を切り分ける、といった確認も役立ちます。

キャッシュはキャッシュとは?、CookieはCookieとは?で詳しく解説しています。

開発者が最初に確認するポイント

開発者がリダイレクトを設定するときは、どのURLからどのURLへ、恒久的なのか一時的なのか、どのHTTPメソッドを扱うのかを確認します。

  • 恒久移転なら301または308、一時移動なら302または307を検討する
  • フォーム送信やAPIでは307/308のメソッド保持を意識する
  • Locationに正しい移動先URLを入れる
  • リダイレクト後に200 OKで表示されるか確認する
  • ループや長いチェーンがないか確認する
  • 内部リンクやサイトマップは新URLへ更新する

既存記事とあわせて読む順番

リダイレクトはURL、HTTP、ブラウザ、DNSと一緒に理解するとつながります。Webページが表示される流れを押さえたうえで、3xxレスポンスとLocationを見ると理解しやすいです。

公式情報と関連リンク

リダイレクトの基本はMDNのRedirections in HTTP、ステータスコードの整理はMDNのHTTP response status codes、移動先を示すLocationヘッダーはMDNのLocation headerが参考になります。

まとめ

リダイレクトは、あるURLへ来た人を別のURLへ自動で案内する仕組みです。

  • HTTPリダイレクトでは3xxステータスコードとLocationヘッダーを使う
  • 301/308は恒久的な移動、302/307は一時的な移動
  • 307/308はHTTPメソッドやリクエスト本文を変えない
  • URL変更、HTTPS化、メンテナンス、送信後の完了画面などで使われる
  • ループや長いチェーン、内部リンク放置に注意する

まずは、リダイレクトを「Webサイトの移転案内」として押さえましょう。そのうえで、301と302の違い、Locationヘッダー、ループの注意点を理解すると、Webのトラブル対応やサイト運用で役立ちます。

タイトルとURLをコピーしました