IIS 7.0 URL リライトモジュール (Rewrite Module)
IIS 7.0 からは URL のリライトモジュールが提供されています。Apache では mod_rewrite として、大変有名なモジュールですが、 このリライトモジュールによって、IIS でも同様の機能を実装することが出来ます。
入手方法
IIS 7.0 URL リライトモジュールは、マイクロソフトダウンロードセンターから無償でダウンロード可能です。
インストール
上記で入手したパッケージを実行するだけで簡単にインストール可能です。
インストールウィザードのスクリーンショットを示します。
インストールが完了すると、IIS マネージャに URL Rewrite が追加されます。
URL リライトモジュールの利用方法
利用シナリオ その1 ~ ユーザーフレンドリな URL からの書き換え
CGI やサーバースクリプトに対して、GET リクエストを送信する場合、クエリストリングにパラメータを設定します。 パラメータを受け取った CGI やサーバースクリプトはその値に応じて、様々な処理を行います。
このときに、URL はクエリストリングを含めて http://hostname.com/foo.ext?bar=xxx&baz=yyy のような形となります。 このとき、http://hostname.com/xxx/yyy という URL で同じ意味に解釈させることができます。
ここでは例として、
/2008/12/25/
という URL でアクセスすると、サーバーでは
/rewrite_test.php?y=2008&m=12&d=25
という意味に解釈するように設定してみましょう。
ユーザー フレンドリー URL ルールの追加
Add Rule をクリックします。
User Friendly URL を選択して OK をクリックします。
画面のように入力します。 (ホスト名が localhost:8080 となっているのは、私が現在ローカルホストのポート 8080 番で IIS をホストしているからです。 そこは適当に直してください。ホスト名やスクリプト名は適当に直してください。)
ここでもしリダイレクトのルールも作成する場合は、下側のチェックボックスをチェックします。
こうすると、/rewrite_test.php?y=2008&m=12&d=25 としてアクセスしてきたリクエストを、いったん /2008/12/25/ にリダイレクトし直します。
PHP テストコード
テスト用のコードを用意しました。以下のファイルを rewrite_test.php という名前で保存します。
<table border="1" cellpadding="5"> <tr> <td>元の URL:</td> <td><?php echo $_SERVER['HTTP_X_ORIGINAL_URL']; ?></td> </tr> <tr> <td>書き換え後のURL:</td> <td><?php echo $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; ?></td> </tr> </table>
このコードは PHP ですが、ASP や ASP.NET などでも同様のことができます。
ブラウザを開き、http://localhost:8080/2008/12/25/ を要求します。
上記のように、内部的に /rewrite_test.php?y=2008&m=12&d=25 として解釈されていることがわかります。
余談 アドセンスのリンクユニット最適化への応用 私も真偽の程はわかりませんが、
ある情報では Google アドセンスのリンクユニットは、URL の情報が意外と大切だと書いてありました。
つまり、同じ情報を表示しているページでも URL が 0013ag3.php であるものと hawaii_travel.php
というページでは、後者の方がよりコンテキストにマッチした広告が表示されるのだそうです。
実際のところは良くわかりませんが。こうした URL リライトによって、より意味のある URL を付け直すことによって、
クローラに対してよい情報を提供できるかもしれませんね。