IIS8.5>サイト> mysite>エラーページ> 404
「静的ファイルからエラー応答にコンテンツを挿入」を選択します。
「クライアント言語でエラーファイルを返してみる」のチェックを外します。
「notfound.html」へのパスを入力してください。パスが存在することを確認しました。
ページにアクセスすると、そこにないことがわかります。
The page cannot be displayed because an internal server error has occurred.
カスタム404ファイルを取得できないのはなぜですか?
私はそれが許可事項だとは思わない、 "notfound.html"をいくつかの場所に移動してみました。そのうちの1つは、サイトの残りの部分を提供する実際のサイトwwwrootフォルダです。
このエラーは、絶対パスがweb.config
で検出されたために生成されます。
C:\path\to\notfound.html
ファイルのsystem.webServer/httpErrors
セクションでは、絶対物理パス(web.config
など)を使用できません。
今あなたは2つの解決策を持っています:
1。ApplicationHost.config
ファイルで物理パスを許可
デフォルトでは、このファイルは%SystemRoot%\system32\inetsrv\config
にあります
このファイルを見つけて編集します
セクション<httpErrors ..... >
を検索
次に、ディレクティブallowAbsolutePathsWhenDelegated="true"
を次のように追加します。
<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" allowAbsolutePathsWhenDelegated="true">
....
....
</httpErrors>
ファイルを保存してください、うまくいくはずです!
2。相対パスを使用
相対パスは、特定のWebサイトのルートフォルダーにカスタムエラーページを保存する必要があることを意味します。
次に、IIS > Sites > mysite > Error Pages > 404
に移動します
そして、次のようにカスタムエラーページをセットアップします:
OK
をクリックします。動作するはずです。
編集:
ただし、次のことに注意してください。
404 Not Found
応答を送信します200 OK
応答を送信します私はあちこち調べて、デフォルトで「false」に設定されている「allowAbsolutePathsWhenDelegated」というものがあることを発見しました。
IIS8.5 > Sites > mysite > Management > Configuration Editor > system.webServer/httpErrors
ただし、値はロックされており、そこで編集することはできません。そこで、ツリーのルートをクリックして、そこで編集できるようにしました。
IIS8.5 > Management > Configuration Editor > system.webServer/httpErrors
ルートの名前は実際には「IIS8.5」ではなく、コンピューター名にちなんで付けられていることに注意してください。
したがって、allowAbsolutePathsWhenDelegatedがtrueに設定された後、すべてが正常に機能しました。別の解決策は、静的ファイルをサイトのwwwrootフォルダー内に配置し、その名前を404エラーページとして入力することでした(私の場合は、相対パスではなく絶対パスを使用する方が適切です)。
このデフォルトの制限については、「エラーページ」画面のどこにも言及されていないことがバグです。これは、パスがサイトルートからの相対パスである必要があることについては何も述べていません。デフォルトは相対パスではないため(inetpubフォルダー内にあるため)、絶対パスが適切に機能すると想定します。
マイクロソフトがこのインターフェイスの問題を今後のバージョンで修正することを期待しています。入力フィールドの制限については、もっと明確にしてください。