web-dev-qa-db-ja.com

500ページにエラーの詳細を表示しながらカスタム404処理を許可するようにWeb.Configファイルを構成する方法

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>
7
Mark

これを試して -

<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ページと同様に私のルートにあります。

3
Ayeni Ayodeji

クラシック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セント、それが役立つことを願っています。ここで私が間違っていると思われる場合はお知らせください。

2
Steffanie

クラシックASPは、デフォルトではIIS7のエラーを通過しません。サイトでこれを有効にするには、コマンドラインから次のコマンドを実行します。必ず、{sitename}を自分のサイト名に置き換えてください。

c:\ windows\system32\inetsrv\appcmd.exe set config "{sitename}" -section:system.webServer/httpErrors/existingResponse: "PassThrough"/commit:apphost

さらに、必ずoff IIS友好的なエラーを有効にしてください。本当に友好的ではありません。

2

500エラーの場合は、別の値を追加してください。

<customErrors mode="On">
<error statusCode="404" redirect="/Custom404.html" />
<error statusCode="500" redirect="/Custom500.html" />
</customErrors>
1
bmercer