ディレクトリの参照の表示にスタイルシートを適用する


ディレクトリの参照を有効にしていると、規定のドキュメントにしたファイルが存在しないときにそのディレクトリにあるファイル/フォルダの一覧を表示します。

この表示はとても素っ気無いものですが、スタイルシートを適用することができます。

Apacheであればmod_autoindexのHeaderNameディレクティブなどで設定することができますが、IIS7.0/7.5ではURL Rewriteを利用することになります。

  1. URL Rewrite Module v2.0をインストールしていない場合はインストールします。
    >>> URL Rewrite Module (IIS.net)

    ※現時点(2009/12/23)ではv2.0はRC2です。v1.1では不具合や機能不足なことがあります。
  2. 適当な場所に適用するcssファイルを作成します。
  3. IISマネージャを起動します。
  4. [接続]ウィンドウで、スタイルシートを適用するサイトやディレクトリを選択します。
  5. [URL Rewrite]をクリックします。
  6. “URL Rewrite”ページの[操作]ウィンドウで[View Pre-conditions]をクリックします。
  7. “Pre-conditions for Outbound Rules”ページの[操作]ウィンドウで[Add]をクリックします。
  8. [Add Pre-condition]ダイアログの[Add]ボタンをクリックし、[Add Condition]ダイアログの各項目に以下のように入力します。
    Condition input {REQUEST_FILENAME}
    Check if input string Matches the pattern
    Pattern ¥¥$
  9. 再び[Add Pre-condition]ダイアログの[Add]ボタンをクリックし、[Add Condition]ダイアログの各項目に以下のように入力します。
    Condition input {HTTP_CONTENT_TYPE}
    Check if input string Matches the pattern
    Pattern ^text/html
  10. [Add Pre-condition]ダイアログの各項目に以下のように入力します。
    Name 任意のPre-condition名
    ex.) Directory-condition
    Using Regular Expressions
    Conditions
    Logical Grouping Match All
  11. [操作]ウィンドウで[Back To Rules]をクリックて[URL Rewrite]ページに戻ります。
  12. “URL Rewrite”ページの[操作]ウィンドウで[Add Rules]をクリックします。
  13. [Add rule(s)]ダイアログで”Outbound rules”の[Blank rule]を選択します。
  14. 各項目に以下のように入力します。
    Name 任意のルール名
    ex.) Directory-list
    Pre-condition 前述の10で入力したPre-condition名を選択します。
    ex.) Directory-condigion
    Match URL
    Requested URL Matches the pattern
    Using Exact Match
    Pattern </head>
    Match the content within 何も 選択しません。
    Custom Tags 選択できません。
    Ignore Case チェックしません。
    Condions
    No conditions definedのままでOKです。
    Action
    Action Type Rewrite
    Action properties
    Value
    2で作成したstylesheetを読み込むlinkタグに続けて</head>を記入します。
    ex.) <link type=”text/css” href=”/css/dir-list.css” rel=”stylesheet” /></head>
    Stop processing ~ ディレクトリの参照の表示に、他のRewrite Ruleを適用する可能性がない場合のみチェックします。
    そうでない場合はチェックしてはいけません。

以上

[このドキュメントに対応する環境]

  • OS
    • WIndows Server 2008
    • Windows Vista
    • Windows 7
  • IIS
    • 7.0
    • 7.5


タグ: , ,


コメント / トラックバック2件

  1. HIFUJII より:

    こちらの方法を試してみたのですが、動作しませんでした。
    どうも「必須条件」の個所が動作していないようなのですが、詳細解説頂けませんでしょうか?

  2. 浅見 城輝 より:

    私もWindows 8で試してみました。
    HIFUJIIさんのおっしゃるように「必須条件」を設定すると希望した動きにならなくなってしまいますね。
    この記事を書いた当時は動いてたのですが、動きが変わったようです。

    そこで一つアイディアなのですが、「必須条件」を設定するのはやめ、一致のパターンを『</head><body><H1>』にし、書き換えの値を『<link type=”text/css” href=”/css/dir-list.css” rel=”stylesheet” /></head><body><H1>』などとしてはいかがでしょうか?

    いまどき自身の用意するhtmlに大文字で「H1」と書かれていることは少ないでしょうし、書かないルールにするということで。

    この記事自体の書き換えは、影響のある記事がいくつかあることと、もう少し調べてからやりたいと思います。

コメントをどうぞ