【ワテ備忘録】IISでフォルダを別フォルダにリダイレクトする

この記事は約11分で読めます。
スポンサーリンク

当サイトとは別の下記サイト、

http://www.wareko.net/

においては、Windows 2012 R2サーバーOS上でIIS8.5ウェブサーバーを動かして自作のWEBサイトを構築している。

当記事では、ウェブサイトを構築する上で、フォルダのリダイレクトが必要になったので、調査してみた。

では、本題に入ろう。

スポンサーリンク
ワテ推薦のプログラミングスクールで学ぶ
スポンサーリンク
スポンサーリンク

http://www.wareko.net/ ワテ自作の革新的ウェブサイト

このwareko.netのサイトでは、主に、

  • JavaScript
  • jQuery
  • TypeScript
  • PHP
  • ASP.NET

などの学習を兼ねて自作のWEBサイトやWEBツールを公開している。

われこマップ 革新的地図情報サイト

その中でも、ワテが最初に作成したのが、

われこマップ – 革新的地図情報サイト

だ。

しかし、公開して約一年になるが利用者さんの数は今一つ伸び悩んでいる。

原因はいくつも考えられる。

  • 起動が遅い(速くても5秒くらい、遅いと10秒以上掛かる場合もある)
  • 各種機能を詰め込んだつもりだが、利用者さんの利便性があまり考慮されていない
  • パソコンにしか対応していない(スマホ、携帯は表示が崩れる、タブレットは未確認)
  • 地図とストリートビューを見るだけだと飽きてしまう(かも)

一番目の起動が遅い理由は、WEBプログラミング初挑戦の作品なので、JavaScriptもjQueryも何もかも良く分からないまま、ネットのサンプルコードを継ぎ足して作って来たのでソースコードが もりそば状態(いやスパゲッティ状態)なのも一因だ。

 

利便性が悪い例としては、Google Maps APIで利用できる三種類の検索機能

  • テキストサーチ
  • 周辺探索サーチ
  • レーダーサーチ

を利用出来るようにしたのだが、まあ使う側からすれば検索機能がそんなにあってもあまり意味はないだろう。

検索機能を使う人の目的は、

○○県□□市で

△△のお店、施設、会社

を探したいという状況が多いと思う。

その為には、テキストサーチとか周辺サーチとかそんな事はどうでも良くて兎に角検索が出来れば良いのだ。

姉妹サイト「われこタウンのページ」

それらの反省点を踏まえながら、もりそば状態のJavaScriptソースコードを整理しながらTypeScript化して作成したのが

姉妹サイト「われこタウンのページ」だ。

猫好きな人には受けるかもしれないが、猫嫌いな人には受け付けられないかも知れない。まあ気にしない。

公開して約一週間くらいになるが利用者さんの数は殆ど無い。何でやねん‼

まあ、こんなものか。

ワテ自作お勧め地図サイト第三弾ワレモバ

追記(2016/10/14)

さらに進化した地図サイトを作ってみた。

一体全体、どんだけ地図サイトが好きなんだよと言われるかも知れない。

ワテ自作お勧め地図サイトワレモバだ。

地図とストリートビューの連動表示が可能だ。

スマホ、パソコンの両方に対応している(はずだ)。

物凄く使い易い地図サイトを目指しています。

IISでフォルダを他のフォルダにリダイレクトする方法

さて、本題のIISでフォルダを他のフォルダにリダイレクトする方法を今日試してみた。

一応、リダイレクト出来ているのでその手順を備忘録として記事にしておく。

何をどうリダイレクトしたいのか?

われこマッププロジェクトは、バージョンアップするたびに、以下のようにそのバージョン番号をサブフォルダ名にしてWindows2012R2へ発行している。

http://www.wareko.net/maps/v3.9.1/ 

http://www.wareko.net/maps/v3.9.2/ 

http://www.wareko.net/maps/v3.9.3/ 

http://www.wareko.net/maps/v3.9.4/ 

http://www.wareko.net/maps/v3.9.5/ 

http://www.wareko.net/maps/v3.9.6/ 

http://www.wareko.net/maps/v3.9.7/  最新版(2016/7/9現在)

こうする事で、もし発行したバージョンにバグが有っても、過去のバージョンには影響しないのでデバッグがし易い。

現状では上記の例よりも沢山のバージョンに分かれているのだが、兎に角、今日発行したv3.9.7が最新版だ。

古いv3.9.1などはもう殆ど誰も使っていないから削除してもよいのだが、念のために

http://www.wareko.net/maps/v3.9.1/  (規定のドキュメントはsearch.php) 

http://www.wareko.net/maps/v3.9.1/search.php

http://www.wareko.net/maps/v3.9.1/index.html

などでアクセスが有った場合に、それらを、

http://www.wareko.net/maps/  (規定のドキュメントはsearch.php) 

http://www.wareko.net/maps/search.php

http://www.wareko.net/maps/index.html

にパーマネントリダイレクトするように設定をした。

要するにフォルダごと他のフォルダに転送するのだ。

 

以下、その手順。

IISサーバーにHTTPリダイレクト機能を追加する

下図のように、サーバーマネージャからIISを選択し、役割と機能の追加を起動する。

下図のようにサーバーの役割を選択して、その中の

WEBサーバー(IIS)

 HTTP共通機能

  HTTPリダイレクト

にチェックを入れて、次へをクリック。

必要なら、再起動するオプションにチェックを入れて、インストールを実行するとリダイレクトの機能がIISに追加される。

無事にインストールに成功した(下図)。

これでIISのリダイレクト機能(URL書き換え、URL rewrite)が使えるようになる。

「URL書き換え」アイコンが出ない

追記(2016/9/12)

上のようにHTTPリダイレクト機能を追加したにも関わらず、下図に示す「URL書き換え」アイコンが出ない場合には、URL rewite機能の本体がインストールされていないと思われる。

其の場合には、Web Plarform Installerを起動して「URL rewite」で検索してURL rewiteの機能を入れる。

そしてIISマネージャを一旦閉じて、再び開くと下図のように「URL書き換え」アイコンが出るはずだ。もしそれでも「URL書き換え」アイコンが出ない場合は、ワテは経験が無いので分からない。申し訳ない。

URL書き換えの設定

転送元フォルダ(v.3.9.4)の中にあるURL書き換えをダブルクリックする。

URL書き換えのウインドウが開く(下図)。

ここで右欄にある規則の追加をクリックする。

規則の追加ウインドウが開いた(下図)

さて、ここでは

受信規則

受信規則と送信規則

送信規則

などを設定すれば、目的の

http://www.wareko.net/maps/v3.9.4/

から

http://www.wareko.net/maps/

へのリダイレクトが実現出来るのだが、その辺りの設定は、

URL 書き換えモジュール用の書き換えルールの作成 – TechNet – Microsoft

などを参考にすると出来ると思う。

でも、なんだかややこしそう。

 

それに、上記の設定画面で何らかのリダイレクト設定を行うと、結局は、Web.configファイルに何らかの設定が書き込まれるわけなので、それならWeb.configを直接編集するほうが手っ取り早い。

 

Web.configを直接編集する

適当にネット検索したら、このページのやり方で行けそうな感じ。

IIS Folder to Folder Redirect Rule

IIS Folder to Folder Redirect Rule - 1. Frontline
<rewrite>

  <rules>

    <rule name="NAME" stopProcessing="true">

      <match url=".*" />

      <conditions logicalGrouping="MatchAny">

        <add input="{HTTP_HOST}{REQUEST_URI}" pattern="(.*)/FOLDER/(.*)" />

      </conditions>

      <action type="Redirect" appendQueryString="false" url="http://DESTINATION-URL.TLD/FOLDERS/{C:2}" redirectType="Permanent" />

    </rule>

  </rules>

</rewrite>

上記の例を応用して、以下のように書いてみた。

<!-- search.phpを既定のドキュメントの一番目に設定にしたらこのブロックが追加された。 -->

<defaultDocument>

  <files>

    <add value="search.php" />

  </files>

</defaultDocument>

<!-- 上のブロックの続きに以下のようにリダイレクト設定を書いてみた。 -->

<rewrite>

  <rules>

    <rule name="NAME" stopProcessing="true">

      <match url=".*" />

      <conditions logicalGrouping="MatchAny">

        <add input="{HTTP_HOST}{REQUEST_URI}" pattern="/v3.9.4/(.*)" />

      </conditions>

      <action type="Redirect" url="http://www.wareko.net/maps/{C:1}" appendQueryString="false" redirectType="Permanent" />

    </rule>

  </rules>

</rewrite>

 

上の記述は二つの部分に分かれている。

<conditions>

  この部分で書き換えの受信規則を書くようだ。

</conditions>

<action>この部分に転送先の規則を書くようだ</>

正規表現でマッチさせて、その結果を利用する手法だ。

詳しい事は各自で調べて下さい。ワテは良く分かっていない。

 

このように設定した後で再び、IISの設定画面を開いてURL書き換えを開いてみると、Web.configの内容が反映されている。

適当にダブルクリックすると、こんなふうに入っている。

なので、Web.configを直接編集したくない場合は、上記のような設定を行うとリダイレクト設定が出来るようだ。

 

さて、次の章ではリダイレクトが正しく動くかどうか確かめるのだが、念のために、ここでIISサーバーを再起動しておいた。(必須かどうかは未確認)

設定通りにリダイレクトするか確かめる

あとはブラウザーで

http://www.wareko.net/maps/v3.9.4/

http://www.wareko.net/maps/v3.9.4/search.php

などを開くと、

http://www.wareko.net/maps/

http://www.wareko.net/maps/search.php

にリダイレクトすると成功だ。

なお、この maps/search.php のファイルの中では、最新版 maps/v3.9.7/search.php にリダイレクト設定しているので、結局 maps/v3.9.4/search.php に来たリクエストは、最新版の maps/v3.9.7/search.php にリダイレクトされる事になるのだ。

 

結果は成功!

まとめ

このやり方で多分良いと思う。

ただし、詳細は各自で確かめて下さい。

この例では同じドメインでの転送だが、おそらく同じやり方で他のドメインのフォルダにも転送できると思う。

具体的には <action url=”http://・・・” /> の部分でurlに他のサイトのアドレスを書けば良いと思うが、ワテは未確認だ。

ASP.NET MVCの本を読む

MS公式解説書であり、アマゾンでの評価も高いのでお勧めだ。

ただしワテは買っていない!高いから。

 

こちらもマイクロソフトの人が書いている解説書のようだ。

パーフェクトと銘打っているのでまさに完璧な解説書だろう。

ただしワテは買っていない!高いから。

スポンサーリンク
ワテ推薦のプログラミングスクールで学ぶ
コメント募集

この記事に関して何か質問とか補足など有りましたら、このページ下部にあるコメント欄からお知らせ下さい。

IISWindows Server
スポンサーリンク
warekoをフォローする
スポンサーリンク
われこ われこ

コメント