404の処理をカスタマイズし、ホスティング会社の提案に基づいて、現在、次のweb.config設定を使用しています。ただし、この構成では、ページエラー(500エラー)もこのカスタムエラーページにリダイレクトされることにすぐに気付きました。この構成ファイルを変更して、ページ内エラーを表示しながらカスタムファイルで404を引き続き処理できるようにするにはどうすればよいですか?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<httpErrors errorMode="DetailedLocalOnly" defaultPath="/Custom404.html" defaultResponseMode="ExecuteURL">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/Custom404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
</customErrors>
</system.web>
</configuration>
これを試して -
<configuration>
<system.webServer>
<httpErrors errorMode="Custom" defaultResponseMode="File" >
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404"
path="404.html" />
<error statusCode="500"
path="500.html" />
</httpErrors>
</system.webServer>
</configuration>
404エラーページは404.htmlであり、500ページと同様に私のルートにあります。
クラシックASP in IIS 7.5 with IIS特定のエラーコード(通常は404)のカスタムエラー処理。これが偶然見つけた人に役立つことを願っています。
私はIIS 7.5 R2を実行していますが、これは一般的にIIS 7に当てはまると思います。
Web.configファイルにこれが含まれている場合:
<customErrors mode="On">
... IIS Manager内で、おそらく[エラーページ]の[機能の編集]を選択して、[エラーページの設定の編集]パネルの機能を変更します。これをカスタムエラーページ(customErrors mode = "On ")、すべてのエラー番号の処理を設定する必要があります。そのため、そうしないでください。
必要なのは、処理したいエラー番号を右クリックして、[編集]を選択することだけです。そこで、作成したカスタムエラーページをポイントするか、URLにリダイレクトできます。サイトのデザインやメニューが変更されたときに更新する必要があるカスタムエラーページを作成するのではなく、ホームページにリダイレクトし、?syserrorなどのクエリ文字列に何かを追加して、ホームページから処理できるようにすることを常にお勧めします。私の手法は、ホームページのスクリプトでこれを確認し、ページが見つからず、ホームページに誘導されたことを知らせる親しみやすいメッセージをポップアップ表示することです。
Web.configファイルは次のようになります。
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath=""
path="http://yoursite.com/index.asp?syserror" responseMode="Redirect" />
</httpErrors>
また、ローカルの場合でも、セキュリティ対策として、本番Webサイトで詳細なエラーメッセージを有効にしないことをお勧めします。システムログで詳細を調べてください。
ちょうど私の2セント、それが役立つことを願っています。ここで私が間違っていると思われる場合はお知らせください。
クラシックASPは、デフォルトではIIS7のエラーを通過しません。サイトでこれを有効にするには、コマンドラインから次のコマンドを実行します。必ず、{sitename}を自分のサイト名に置き換えてください。
c:\ windows\system32\inetsrv\appcmd.exe set config "{sitename}" -section:system.webServer/httpErrors/existingResponse: "PassThrough"/commit:apphost
さらに、必ずoff IIS友好的なエラーを有効にしてください。本当に友好的ではありません。
500エラーの場合は、別の値を追加してください。
<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>