
今回は、Windows Server の IIS(Internet Information Services)で HTTPリダイレクトを設定する手順を解説します。
Webシステムのメンテナンス時などに、
メンテナンスページへ一時的に転送したい
別URLへまとめてリダイレクトしたい
301 / 302 / 307 を使い分けたい
といった対応が必要になることがあります。
IISでは GUI から簡単に設定できますが、
事前に「HTTPリダイレクト機能の有効化」が必要な点など、少しハマりやすいポイントもあります。
この記事では、
リダイレクト機能の有効化
IISマネージャーでの設定手順
Web.config の変更内容
302 / 307 / 301 の違い
まで、実務でそのまま使える形で手順をまとめています。
それでは設定方法を見ていきましょう。
リダイレクト設定手順
設定手順は以下になります。とても簡単です。
リダイレクト設定手順
- HTTPリダイレクト機能有効設定
- リダイレクト設定
- リダイレクト確認
それでは、説明していきます。
1.HTTPリダイレクト機能有効設定
まず、リダイレクト機能を有効にする必要があります。これを有効にしておかないとIISで設定することができませんので最初に実施しましょう。設定はサーバーマネージャーで実施します。
それでは設定していきます。サーバーマネージャーを立ち上げ「IIS」を選択→管理から「役割と機能の追加」を選択します。

「サーバーの役割」を選択→「HTTPリダイレクト」にチェックを入れます。「次へ」を押して指示に従いインストールします。

これで完了です。WindowsサーバーOSのバージョンにもよるかもしれませんが、再起動は求められないと思います。
2.リダイレクト設定
次に、リダイレクト設定を実施していきます。こちらはIISマネージャーで実施します。
まず、IISマネージャーを立ち上げ、リダイレクトしたい対象サイトを選択します。

「HTTPリダイレクト」を選択します。

.設定画面になりますので「このリダイレクト先に要求をリダイレクト」にチェックを入れ、テキストボックスにリダイレクト先を指定し、リダイレクト操作の「すべての要求を~」にチェックを入れます。「サブディレクトリは含まない」にはチェックをいれません。※1
最後に「状態コード」を選択します。一時的なリダイレクトの場合、302か307を選択します。302は単純にリダイレクトするだけですが、307はリダイレクト前にpostやgetの動作を保障してくれます。
なので、リダイレクトさせる前に裏で走っているプログラムとpostやgetでデータをやり取りさせる必要がある場合は307、特にやり取りさせる必要がない場合は302を選択すればよいと思います。(ちなみに、永久にリダイレクトさせたいときは301を指定します)
以上でリダイレクト設定は終了です。

※1「サブディレクトリは含まない」にチェックを入れない理由は、リダイレクト対象のサイトのトップページ以下に直接アクセスされたときにもリダイレクトしたいからです。
例えば、「http://www.〇〇〇.com/」がリダイレクト対象だったとします。このサイトをリダイレクトしたいとき、通常は「http://www.〇〇〇.com/」の配下にあるページもリダイレクトさせます。「http://www.〇〇〇.com/category1/page1.html」などがあったとしても、これもリダイレクトさせたいわけです。
しかし、「サブディレクトリは含まない」にチェックを入れていると、直接「http://www.〇〇〇.com/category1/page1.html」とたたかれたときにリダイレクトしてくれなくなります。これは困るわけです。なので、「サブディレクトリは含まない」にはチェックを入れません。※例外的に「このページへのアクセスだけはリダイレクトさせたくない」というようなことがあれば、「サブディレクトリは含まない」にはチェックを入れる必要があります。
3.リダイレクト確認
リダイレクト対象のページにアクセスし、設定したリダイレクト先に飛ぶことができていれば設定完了です。念のため、リダイレクト対象のサイト配下にアクセスしてもリダイレクトされることを見ておきましょう。(「サブディレクトリは含まない」にチェックを入れていない前提です)
例えば、「http://www.〇〇〇.com/」がリダイレクト対象だったとして、「http://www.〇〇〇.com/category1/page1.html」にアクセスしてもリダイレクト先に飛ぶことを確認します。このとき、「http://www.〇〇〇.com/」以下に指定するファイルなどは適当で大丈夫です。実際にないファイルでも「http://www.〇〇〇.com/」以下であればリダイレクトします。
以上で作業は終了なのですが、この設定で実際に何が変更されているのか気になる人は以下参考にしてください。
Web.configファイルの確認
これまでのリダイレクト設定で実際に何が変更されているかといえば、Web.configファイルなのです。(通常はサイトに対応したローカルパスの直下に置かれています)
Web.configはxmlファイルなのですが、上記のリダイレクト設定をすることでこのファイルに<httpRedirect>タグが追加され、以下のようになります。

設定画面と<httpRedirect>タグ要素の対応を説明しておくと、「このリダイレクト先に要求をリダイレクト」が「enable = 」に対応。(チェックを入れるとtrue,外すとfalse)
テキストボックスに設定したリダイレクト先が 「destination=""」に設定される
「すべての要求を~」が「exactDestination=」に対応。(チェックを入れるとtrue,外すとfalse)
「サブディレクトリは含まない」が「childOnly=」に対応。(チェックを入れるとtrue,外すとfalse)
「状態コード」に対応する要素は「httpResponseStatus」になるのですが、302を選ぶと省略されるようです。
このようになっております。
「え?じゃあ、IISマネージャーの設定画面で設定しなくてもWeb.config変更すりゃいーじゃん」
と思われた方、その通りなのです^^;
Web.config直接編集してもリダイレクト設定は可能です。ただ、HTTPリダイレクト機能(冒頭で説明した「1.HTTPリダイレクト機能有効設定」)を有効にしておかないと、Web.configを正しく変更してもリダイレクトできませんでした。おそらく、何かしらの因果関係があるのだと思います。
Web.configを編集する方法としては直接ファイルを開いて編集する方法とコマンドプロンプトで「appcmd」コマンドを使用する方法があるのですが、一番楽なのはやっぱりIISマネージャーの設定画面を使う方法だと思います笑
以上、今回はIISでのリダイレクト手順について説明しました。
まとめ
今回はIISでのリダイレクト手順について説明してみました。
まだ若いころ、メンテナンス画面を表示させるときにトップページだけ差し替える対応をしてしまって
「トップページ配下に直接入れるやないか!」
ときつくおしかりを受けたことがあり、以降、しっかりとリダイレクトを理解し、設定するようになりました。
初歩的すぎる失敗ですが、失敗は重要ですね笑
この記事が初めてIISにてリダイレクト設定される方の助けになれば幸いです。
✅ ITキャリアを育てるコミュニティ「ITキャリアラボ」
「独学だと続かない…」
「相談できる人がいない…」
「同じ目標の仲間がほしい…」
そんな方向けに、
無料のLINEコミュニティ『ITキャリアラボ』を運営しています。
エンジニア歴20年・講師の僕が、
・資格学習のコツ
・勉強法アドバイス
・キャリア相談
・IT業界のリアル情報
などを発信&質問対応しています。
📌 参加無料・匿名OK・LINEだけで完結
📌 まずは「話を聞くだけ」でも大歓迎
独学で悩む時間を減らしたい人は、気軽に頼ってください。
👇お気軽にどうぞ
ITキャリアラボ
-

【無料】ITの悩みを気軽に相談できるコミュニティ・ITキャリアラボ
続きを見る