リダイレクトとフォワードの仕組みと違い | Web基礎

Other プログラミング

リダイレクトとフォワードの仕組みについて解説します。

リダイレクト(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, 302200
クライアントの
ブラウザの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のコンテナを作るやり方

人気記事 ITブラック企業の求人の見分け方!7つのポイント