【りだいれくと】
リダイレクト とは?
最終更新:
💡 移動先のURLを知らせ、そこへアクセスし直す
アクセス先から別のURLへ案内する仕組み。HTTPではサーバーが状態コードとLocationを返し、ブラウザーなどが移動先へ新たにリクエストします。恒久・一時の移転やメソッドの扱いを区別します。
📌 このページのポイント
リダイレクトって何?
301と302の違いは?
301は恒久的な移転、302は一時的な移転を表す。308と307もそれぞれ恒久・一時だけど、自動で追従するときにメソッドを変えない。送信データのあるPOSTでは、単に恒久か一時かだけで選ばないようにしよう。
フォーム送信後に別のページを見せるときは?
303は別のリソースをGETやHEADで取得するよう案内する。送信後に結果ページを表示する例があるよ。301や302でもPOSTからGETへ変わる場合があるので、POSTを保つ必要があるなら307や308の意味と実装を確認しよう。
設定しなければ必ず404になる?
古いURLをどう扱うかによるよ。古いページが残ればそのまま表示される場合もある。対応する移転先があるならそこへ案内し、削除して代わりがないページまで無関係なトップへ転送しないようにしよう。検索順位が必ず維持されるわけでもないよ。
何に注意すればいい?
もっと詳しく知りたい人へ
アドレスバーが変わらない転送もリダイレクト?
サーバーが裏側で別のサーバーから内容を取り寄せ、元のURLの応答として返すなら、一般にはリバースプロキシなどの処理です。この図のHTTPリダイレクトは、クライアント自身がLocationのURLへ新しいリクエストを送る流れを表します。
JavaScriptで移動させても同じ?
画面上は同様に移動できますが、HTTP応答の301などとは実装が異なります。Googleはサーバー側のリダイレクトを使える場合には優先し、JavaScriptは他の方法が使えない場合に検討するよう案内しています。レンダリングに失敗すると、移動を認識できない可能性があります。
まとめ:ざっくりこれだけ覚えればOK!
「リダイレクト」って出てきたら「別のURLへアクセスし直すよう案内する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Redirect」 = 再び方向を変える
💬 Re(再び)+ Direct(方向づける)。アクセス先の方向を変えるという意味だよ