これは、C# & .Net Framework 4.0 で作成しました


はじめに
IIS の HttpModule です。

トレイリングスラッシュ(Trailing Slash)がないと、一旦リダイレクトしますが、もう内部で付けてしまえばいいのではないか。
という事で、IISがHTTPリクエスト・メッセージを受信した直後に、指し示すURLがディレクトリで、トレイリングスラッシュがないと、付けてから処理する。・・・という HttpModule です。

301でリダイレクトなので、無駄な通信が発生する
(ついでにプライベートIPアドレスも見えるけど)
「/directory」→(sForceTrailingSlash.dll)→「/directory/」→(IISの既定のコンテンツ)→「/directory/Default.htm」という流れ



仕組み
  1. BeginRequest イベントにおいて・・・
  2. ((HttpApplication)sender).Context.Request.RequestContext.HttpContext.Request.PhysicalPath で物理パスを取得して、ディレクトリなら・・・
  3. ((HttpApplication)sender).Context.Request.RequestContext.HttpContext.Request.Path の最後が「/」でなければ・・・
  4. 上記のURLの最後に「/」を付けて、((HttpApplication)sender).Context.Request.RequestContext.HttpContext.RewritePath() メソッドに渡す

という単純な仕組みです。


動作環境
Microsoft .NET Framework4.0 & Microsoft IIS

IIS 管理マネージャから、HttpModule として登録してください。


インストール方法と使用方法

  1. まず、IIS をセットアップしてください。

  2. 次に、ランタイム(.NET Framework4.0)をセットアップします。

  3. sIIS_ForceTrailingSlash.lzh をダウンロードします。

    ダウンロードしたファイルを解凍しします。
    (LHAは、吉崎栄泰氏が、著作権を所有)

  4. IISの管理マネージャから、.NET Framework4 用のアプリケーションプールを作成しておいてください。

  5. お好きなWebアプリケーション(アプリケーションプールが .NET4 でないとダメです)のディレクトリ直下の「Bin」下に、sForceTrailingSlash.dll を配置してください。
    既定のWebルートであれば「C:\InetPub\wwwroot\bin」だと思う。

  6. Web.configを編集してください。
    例えば、こんな感じ

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <system.webServer>
            <modules>
                <add name="sIIS_ForceTrailingSlash" type="sForceTrailingSlash.ForceTrailingSlash,sForceTrailingSlash" />
            </modules>
        </system.webServer>
    </configuration>


  7. IIS を再起動すれば、トレイディングスラッシュがなくても、ディレクトリ(または既定のコンテンツ)呼び出しをします。

削除方法
sForceTrailingSlash.dll を削除し、Web.config の該当箇所を削除すればよいです。


免責など
プログラムの改変については、各自の責任で行う分については、自由に行って結構です。(参考になりましたメールをくれると、うれしい...(*^_^*))

修正BSDライセンスで配布します。


Version1.0.0.0DownLoad(sIIS_ForceTrailingSlash.lzh as 8,671byte) (sIIS_ForceTrailingSlash.lzh.base64)

履歴



mail to active@window.goukaku.com