.Text や nGallery でも採用している、URL をパラメーターとしてページを表示する方法があります。これが、URL Rewriting のキーワードでたくさん引っかかりますが、その中で今回は1つ、サンプルを紹介します。実際は下記の Web で紹介されている部分を抜粋して日本語で紹介しただけのもになりますが。

URL Rewriting with ASP.NET

コンポーネントの展開

まず、上記のサイトからサンプルコードをダウンロードすると、すでにコンパイルされた ThunderMain.URLRewriter.dll というファイルがあります。これを、bin ファイルとして展開してください(実はサンプルのコードを c:\inetpub\wwwroot\urlrewriter に展開するのでほとんど動きますが)。

動作させるための設定

この DLL を呼び出すためには、web.config に以下の項目を追加します。

<configuration>
    <configSections>
        <sectionGroup name="system.web">
            <section name="urlrewrites" type="ThunderMain.URLRewriter.Rewriter, ThunderMain.URLRewriter, Version=1.0.783.30976, Culture=neutral, PublicKeyToken=7a95f6f4820c8dc3"/>    
        sectionGroup>
    configSections>
  <system.web>
 ...

sectionGroup はどの部分に URL のパターンを埋め込むかということで、ここでは system.web ということになっています。その中で urlrewrites の名前でエントリーをするわけです。また、ここでは呼び出しをするために名前を呼び出して(ThunderMain.URLRewriter.Rewriter)、どのファイルにあるのか(ThunderMain.URLRewriter)を説明することになります。

上記のコードを書いたあと、パターンを記述することになります。当然ながら、これは system.web の中に記述しますのでこんな感じで書いてください。

<system.web>
    <urlrewrites>
        <rule>
            <url>/urlrewriter/show\.aspx</url>
            <rewrite>show.aspx</rewrite>
        </rule>
        <rule>
            <url>/urlrewriter/wohs\.aspx</url>
            <rewrite>show.aspx</rewrite>
        </rule>    
        <rule>
            <url>/urlrewriter/show(.*)\.aspx</url>
            <rewrite>show.aspx?$1</rewrite>
        </rule>    
        <rule>
            <url>/urlrewriter/s/h/o/w/(.*)\.aspx</url>
            <rewrite>/urlrewriter/show.aspx?id=$1</rewrite>
        </rule>    
    </urlrewrites>
....
</system.web>        

また、追加で記述する部分としては global.asax にコードを追加することになります。

<script language="C#" runat="server">
    protected void Application_BeginRequest(Object sender, EventArgs e){
        ThunderMain.URLRewriter.Rewriter.Process();
    }
</script>

IIS の設定を変更する

次に、IIS の設定を変更します。まず、urlrewriter というディレクトリをアプリケーションとして定義する必要があります。Windows XP であればインターネットインフォメーションサービスを開いて、ディレクトリのプロパティを開いて「作成」をして、構成のところでマッピングを追加します。追加をするのは、C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll を実行ファイル、拡張子としては .* を入力し、ファイルの存在を確認するのチェックを外します。Windows Server 2003 でもほぼ同様に追加しますが、マッピングとしてはワイルドカードアプリケーションマップのほうに追加する形になります。

これで一通り準備は完了です。

アクセスをしてみる

今回は web.config はサンプルのままではありません。これは、IIS 6 では拡張子 ASP に関してロックダウンされている可能性があるので、.aspx にすべて拡張子を変更してあります。HTML としては以下のとおりです。

<LI><A href="show.aspx">show.aspx</A></LI>
<LI><A href="wohs.aspx">wohs.aspx</A></LI>
<LI><A href="show5.aspx">show5.aspx</A></LI>
<LI><A href="s/h/o/w/5.aspx">s/h/o/w/5.aspx</A></LI></UL>

そして上記の変更だけをしたサンプルを立ち上げておきました。こちらも参考までに見てみてください。

サンプルサイト