人生を自由に楽しむために会社員を辞め、フリーランスを経て法人化し、現在は一人社長をしています。ユウイチです。
今回は基礎技術の紹介です。
稼働中の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にてリダイレクト設定される方の助けになれば幸いです。
自由になるための一つの選択肢『フリーランス』
過去の僕と同じように、会社に以下のような不満がある
不満
お金のために働いてるけど、給料が上がらない
ホントにやりたいのはこんな仕事じゃない
自分の時間がない
人間関係に疲れた
という方はフリーランスを目指すのも一つの手です。
僕は独立後に開発案件を経て講師をメインの仕事としてますが、講師に生きがいを感じることがわかったのも、フリーランスエージェントさんといろいろお話できたからです。
フリーランスエージェントさんに話を聞くことで自分の可能性を知ることもができますし、自分の時間が増えるフル在宅の案件でしかも高単価みたいな案件や、こんなのもあるのか!と驚くような案件を紹介してもらえることもあります。
「フリーランスになればすぐに理想の自由な生活が実現できる」
というわけではないのですが、自由を目指されている方は、会社員時代よりも確実にそこに近づくことはできると思います。
今はいろんなフリーランスエージェントがありますが、実績のある・PE-BANKやレバテックフリーランス、geechs job(ギークスジョブ)
がオススメです。
僕も全て登録しており、いろんな案件を紹介していただきました^^
僕と価値観が似ているという方は、自由を目指していきましょうね!