基礎技術

とても簡単!IISでのリダイレクト設定を説明します

以下の不満を解消するため、会社員をやめてフリーランスになった『NaruTaku』と申します。

会社員時代の不満

・収入の限界(給料が上がらない)

・自由な時間が持てない(会社に拘束される)

・人間関係がしんどい

※フリーランスになり、これらの不満は解消されました(収入も増え、自分の時間を増やし、のびのびと働くことができております)

今回は基礎技術の紹介です。

稼働中のWebシステムメンテナンス時などに「メンテページ作ってリダイレクトさせといて!」みたいな依頼をされることがあると思うのですが、今回はWindowsでよく使用されるIISでのリダイレクト手順を説明します。

リダイレクト設定手順

設定手順は以下になります。とても簡単です。

リダイレクト設定手順

  • 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にてリダイレクト設定される方の助けになれば幸いです。

最後まで読んでくださりありがとうございました。

  • この記事を書いた人
  • 最新記事

NaruTaku

40代のフリーランスエンジニア・シナリオライター。 20代前半から20年間エンジニアとしてキャリアを積みフリーランスへ転身。ソフトウェア開発とゲーム開発、シナリオ執筆をメインに、プログラミング講師・Webライターとしても活動。また、フリーランスになり見た目の重要性に今さら気づき、ヒゲ脱毛を実施中。

-基礎技術