エラーページをカスタマイズするにはIISマネージャからエラーページを編集すれば良いらしい。
デフォルトは"C:\Windows\System32\inetsrv\config\applicationHost.config"で設定されていているようだ。
これを見るとエラーページは"%SystemDrive%\inetpub\custerr"に置かれている。
先のエラーページ編集画面にてサイト固有のエラーページの設定が可能で、その設定値はサイトフォルダーのweb.configに置かれるって仕掛けなのだろう。
ただし、このエラーページ設定画面の使い方が今一つ良く解らない。
例えば、404をカスタマイズしようとしてその行をダブルクリックするとこんな画面が表示される。
ここでファイルパスを編集するために「設定」ボタンをクリック。
試しにcusterr2を指定してみる。(実体はcusterrからそのままコピーした)
なんとなく類推するにapplicationHost.configの以下の部分でそういう指定がされているように見える。(単純に英語を解釈すると)
この指定を修正すれば良いのだろうが、applicationHost.configを触るのは気が引ける。Web.configでこの設定自体を上書きるのかもしれないが、あまり突き詰める問題でも無さそうなので素直に相対パスを指定することとした。
が、その相対パスの指定の仕方が判らない。
この画面の「ルートディレクトリパス」が物理パス以外上手く受け付けてくれない。
..\とかやってみても、エラーにはならないのだが、思った場所を見に行ってくれない。..\..\..\..\..\とかありえなそうな指定をしてもエラーにならないのでさっぱり判らない。
なぜ、こんな簡単そうな事がこんなにも難しいのか・・・。
あれこれ試しているうちにIISマネージャが異常終了までする始末。
ーー
一晩眠って気を取り直し。
仕方が無いので英語情報を漁って見る。
すると、どうも根本的に勘違いをしていたような気がしてきた。
この画面で、エラーページを単純に差し替えるには「静的ファイルのコンテンツをエラー応答に挿入」、aspxなどに置き換えるには「このサイトでURLを実行」を指定すると単純に字面から判断していたのだが、どうもこれが違っているような気がしてきた。
「静的ファイル」と「実行」というキーワードで脊髄反射的にそう解釈していた。
「エラー応答に挿入」に注目すると、テンプレート的なエラーページに対して部分的に挿入するという事なのではないだろうか。
「実行」という文字と「例:hoge/404.aspx」で、ここではaspxを指定するものだと思っていたが単純に差し替えたい場合はここにhtmlファイルをしてすれば良いのではなかろうか。
ローカル要求に対してはカスタムエラーページを表示しないようになっているので、リモートからアクセスして確認するか、「カスタムエラーページ」に変更してから確認してみると良さそうだ。
これでやっと以下のうようなエラーページを表示することが出来た。
「静的ファイルのコンテンツをエラー応答に挿入」の具体的な方法は未だに解らないままだが(調べていない)、今回はIISの機能を俯瞰するのが目的なのでこのへんで良とする。
--
もう一度調べてみた
IIS: ◆エラーページをカスタマイズする
0 件のコメント:
コメントを投稿