D-WEBトップニューススポーツ芸能2024年カレンダーベストセラー料理レシピ百科ログファイル一覧

Web - IIS7、8でURLの書き換えが可能に (2014/10/16)


・今までのURLの書き換え
Server2003 IIS6.0までは、URLを書き換えるため、ThunderMain URLRewriterというツールを使用していました。

・ワイルドカードのマッピング
このツールの設定方法は、まず、書き換えるディレクトリをアプリに変換し、binフォルダを作成し、そこにDLLファイルをいれる。
アプリの構成で、ワイルドカードのマッピングを追加して、ハンドラに.netのDLLを指定してやる。
ディレクトリ下にglobal.asaxを用意して、イベントハンドラを設定し、ThunderMain.URLRewriter関数を指定する。
さらにweb.cofigを用意して、その中に、変換のルールを正規表現で記述しておく。
以上でそのディレクトリに来たリクエストは、ルールに従って、指定したアプリにクエリ付きで変換されます。
各ディレクトリ毎に設定を行うのは、ツールでは、ディレクトリ(/)だけのURLを捕まえることができないからです。/のリクエストは、まずIISがこれを捕まえて、既定のドキュメント(例えばindex.aspx)に処理を渡してしまいます。つまり.netまで回ってこないのです。変な書き方をすると、思わないエラーが起きることになります。

IIS6.0のワイルドカードマッピング

・server2012で動作しない
今回サーバーを新しくすることになり、Server2012R2を導入しました。そして、IISでサイトを作成し、上記の方法で、DLLおよびweb.cofig等を設定しました。ところが、このIISにはアプリの構成やワイルドカードのマッピングがありません。よくよく見ると、ハンドラ マッピングというそれらしいアイコンがあったので、それをクリックしてみました。
そこにワイルドカード スクリプト マッピングというのがあったので、これで設定することにしました。画像で分かるように、ワイルドカード*がたくさんあります。一抹の不安を感じながら、URLを実行すると、案の定URLがないというエラーが出ました。その後*を捕まえるため、色々と試してみましたが、見事に全滅しました。ネットもかなり調べましたが、原因は分かりません。これがIISのバージョンアップなのだろうということで、あきらめることにしました。

IIS8.5のワイルドカードマッピング、うまく動作しない。

・Microsoft URL Rewrite Module 2.0
その後、「IIS URL Rewrite」で検索していると、なんだかIISでもURLの書き換えができるというような記事がいくつか見つかりました。さらに調べていくと、Microsoft URL Rewrite Moduleというツールに行き着きました。IIS7.0(Server2008)から提供されていたようです。サイトを構築する上で必要なことなので、今までも、何回か「IIS URL Rewrite」に関して情報がないかどうかは調べていましたが、気がつきませんでした。

・あまり使われていない
これだけ徹底的に調べて、ようやく見つかったということは、この機能はあまり使用されていないということなのでしょう。IIS(.net、Windows)ユーザーは、多分URLを書き換えることがほとんどないのでしょう。確かに実務本位の業務用システムにはURLの整形は全く必要ありません。
しかし、業務用アプリではなく、商用サイトとしてWEBを構築する場合、?から始まるクエリでページを表すのはあまり賢明ではありませんし、ともするとApacheユーザーからはバカにされます。page.aspx?p=1ではなく、1.htmlあるいは1.aspxとした方が分かりやすく、スマートになります。
たったこれだけのことですが、今までのIISでは簡単にはできませんでした。WordPressやPHPなどApache系のwebでは常識なのですが…。これでようやく、ApacheにIISが追いついたというか、webの仲間入りできたことになります。

・モジュールのインストール
URLを書き換えモジュールをダウンロードしてインストールします。IISマネージャに「URL 書き換え」のアイコンが表示されます。

「URL 書き換え」のアイコン

・web.cofig
トップページのweb.cofigファイルのブロックに書き換えルールを書きます。
下記は、/aaa/10.aspxを/aaa/page.aspx?p=10に書き換える例です。

<system.webServer>
  …
  <rewrite>
    <rules>
      <rule name="1">
        <match url="^aaa/(.*).aspx$" />
        <action url="/aaa/page.aspx?p={R:1}" type="Rewrite" />
      </rule>
      <rule name="3">
        <match url="^abc/(.*)/(.*).html$" />
        <action url="/a/b/c.aspx?d={R:1}&n={R:2}" 
          type="Rewrite" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

ルールは正規表現で書きます。
先頭の^と末尾の$を入れておくことが必要です。これがないと、/bbbaaa/や1.aspx/もマッチしてしまいます。
()でくくると変数扱いになります。変数呼び出しは正規表現では$1、$2ですが、ここでは{R:1}、{R:2}…になります。変数というより、変数の配列と考えた方がいいでしょう。ちなみに{R:0}はURL全体になるようです。試してみてください。
&は&と書きます。web.cofigファイルはXMLファイルのため、<や&はそのまま書くとエラーになります。
ルールを書いたweb.cofigを保存します。間違いがなければ、即「URL書き換え」が実行されます。

・GUI
URL書き換えルールは、IISのGUI(URL書き換え)でもできます。MSのテクニカルサイトにはこちらの記述方法が載っています。
上記のようにweb.cofigを編集すると、それがGUIでも表示されます。書き方がまずいとXMLエラーになり、内容が表示されない場合がありますので注意が必要です。正式な記述を知りたい場合は、GUIを使用した方がいいでしょう。
結果はweb.cofigに反映されます。


GUIでルールを記述、編集する

「URL 書き換え」はApache並みの複雑なURL書き換え、リダイレクト、ヘッダー等の分析もできるようになっているようです。詳しくはMSのテクニカルサイトを参照してください。

 共有元ページ


スポンサー リンク



話題のアイテム

natural spirit(ナチュラルスピリット)/ 南部熊鈴 02199

創業 80 年以上の盛岡市にある馬具店の、南部馬具職人が 1 個ずつ手作りしています。音程の異なる 2 個のブラス製の鈴を組み合わせているので、とても美しい音色です ( 革の色が画像と異なる事があります )。山歩きにぜひ。



D-web ランキング ベスト

ベストセラー 白銀の墟 玄の月 第二巻 十二国記
音楽 【メーカー特典あり】 馬と鹿 ) ) 米津玄師
DVD 5×20 All the BEST!! CLIPS 1999-2019

ニュース
スポーツ
芸能 筧美和子「グラビアで何か残したい」7年半ぶり写真集 東京、福江島、沖縄で「自然な姿」

旬の話題 サッカー日本代表 新ユニフォーム

  共有ブログ


Copyright © 2024 D-web Portal. All Rights Reserved.

当サイトへのリンクは自由です。 D-web ポータル