【りだいれくと】

リダイレクト とは?

最終更新:
💡 移動先のURLを知らせ、そこへアクセスし直す

アクセス先から別のURLへ案内する仕組み。HTTPではサーバーが状態コードとLocationを返し、ブラウザーなどが移動先へ新たにリクエストします。恒久・一時の移転やメソッドの扱いを区別します。

📌 このページのポイント
HTTPリダイレクト:新しいURLへ要求ブラウザーサーバー1 GET /old2 301 + Location: /new3 GET /new4 200 + ページ内容案内を受けたブラウザーがアクセスし直すGETの例。コードによりメソッドの扱いは違う
上から下へ通信の順を追い、右が要求、左が応答です。移動先が同一サーバーの例で、別ドメインの場合もあります。サーバーが代理で内容を取り寄せる処理とは区別します。
ひよこ ひよこ
リダイレクトって何?
ペンギン先生 ペンギン先生
古いURLへアクセスした人を、新しいURLへ案内する仕組みだよ。HTTPの場合、サーバーが301などと移動先のLocationを返し、ブラウザーが移動先へアクセスし直す。元のサーバーが裏側でページを取り寄せるプロキシとは違うんだ。
ひよこ ひよこ
301と302の違いは?
ペンギン先生 ペンギン先生
301は恒久的な移転、302は一時的な移転を表す。308と307もそれぞれ恒久・一時だけど、自動で追従するときにメソッドを変えない。送信データのあるPOSTでは、単に恒久か一時かだけで選ばないようにしよう。
ひよこ ひよこ
フォーム送信後に別のページを見せるときは?
ペンギン先生 ペンギン先生
303は別のリソースをGETやHEADで取得するよう案内する。送信後に結果ページを表示する例があるよ。301や302でもPOSTからGETへ変わる場合があるので、POSTを保つ必要があるなら307や308の意味と実装を確認しよう。
ひよこ ひよこ
設定しなければ必ず404になる?
ペンギン先生 ペンギン先生
古いURLをどう扱うかによるよ。古いページが残ればそのまま表示される場合もある。対応する移転先があるならそこへ案内し、削除して代わりがないページまで無関係なトップへ転送しないようにしよう。検索順位が必ず維持されるわけでもないよ。
ひよこ ひよこ
何に注意すればいい?
ペンギン先生 ペンギン先生
AからB、BからAへ戻るループは表示できなくなる原因になる。多段転送は余分な通信を増やし、クライアントの追従上限にも注意が必要だよ。移転先の内容と安全なURLを確認し、旧URLへの案内が必要な間は旧ドメインや転送設定も管理しよう。
もっと詳しく知りたい人へ

アドレスバーが変わらない転送もリダイレクト?

サーバーが裏側で別のサーバーから内容を取り寄せ、元のURLの応答として返すなら、一般にはリバースプロキシなどの処理です。この図のHTTPリダイレクトは、クライアント自身がLocationのURLへ新しいリクエストを送る流れを表します。

JavaScriptで移動させても同じ?

画面上は同様に移動できますが、HTTP応答の301などとは実装が異なります。Googleはサーバー側のリダイレクトを使える場合には優先し、JavaScriptは他の方法が使えない場合に検討するよう案内しています。レンダリングに失敗すると、移動を認識できない可能性があります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リダイレクト」って出てきたら「別のURLへアクセスし直すよう案内する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Redirect」 = 再び方向を変える
💬 Re(再び)+ Direct(方向づける)。アクセス先の方向を変えるという意味だよ

参考資料

← 用語集にもどる