リダイレクトとフォワードの仕組みと違い | Web基礎
リダイレクトとフォワードの仕組みについて解説します。
リダイレクト(Redirect)とは?
リダイレクトとは、下図のようにクライアントとWebサーバーがやりとりをします。
まず、http://test.com/hogeのリクエスト情報がきたら、/fugaへリダイレクトをするように、クライアントにリダイレクトの要請をします。
それに応じて、クライアントは、新しいリクエスト情報であるhttp://test.com/fugaを送ります。
最終的に/fugaにアクセスした時のレスポンス情報をWebサーバーが返します。
フォワード(Forward)とは?
フォワードとは、下図のようにWebサーバーが別のレスポンス情報を返すやりとりをします。
まず、http://test.com/hogeのリクエスト情報がきたら、Webサーバー内で/fugaへフォワードをします。
フォワードされたWebサーバーは、http://test.com/fugaのリクエスト情報が来た時に返す/fugaのレスポンス情報を返します。
リダイレクトとフォワードの違いと使い分け方
リダイレクトとフォワードは、http://test.com/hogeのリクエスト情報が来たら、最終的に/fugaのレスポンス情報を返すところは同じでした。
しかし、上図でわかるように、それに至るまでのプロセスの違いがあります。
違いは、以下のような違いがあります。
リダイレクト | フォワード | |
リクエスト情報 | 新しくなる | 引き継がれる |
ステータスコード | 301, 302 | 200 |
クライアントの ブラウザのURL表記 | 変わる http://test.com/fuga | 変わらない http://test.com/hoge |
速度 | 遅い(2往復) | 速い(1往復) |
範囲 | 外部のサーバーも可 | 自身のサーバー内のみ |
リダイレクトの用途
例えば、
- ドメインの変更をしたいが、古いドメインでアクセスが来た時に新しいドメインにアクセスをさせたい。
- 違うサーバーへ処理を転送したい時
- 遷移した後、遷移先のURLにしたい(F5押してももう一度リダイレクトしなくて済む)
- SEOの観点から表示エラーになっているページをリダイレクトする。
フォワードの用途
- 違うURLのレスポンス情報を返したい時。
- 同じサーバー上のページにリクエスト情報を引き継いで遷移をさせたい時。
- ユーザーに違うURLから別のレスポンス情報を返したことを見えないようにしたい時。
(余談)リダイレクトのステータスコード 301と302の違い
通常、通信を行って正常な場合ステータスコード200が返ってきます。
しかし、リダイレクトした場合は、ステータスコード301と302が返ってきます。
簡単にいうと、一時的なものであるか?永続的なものであるか?の違いです。
永続的なリダイレクト: 301
一時的なリダイレクト: 302
例えば、新規ページを作りたいがまだできていない時、「制作中」のページに一時的に飛ばしたい場合は、302を使います。
一方で、ドメインを変更して、半永久的にリダイレクトしたい場合、301を使います。
人気記事 Springbootの環境構築から Hello worldまで on Mac
人気記事 DockerでMySQLとphpAdminのコンテナを作るやり方