8

カスタム エラーがない場合に asp.net が通常の 404 応答を行うのに対し、カスタム エラーをオンにすると 302 または 200 で応答するようになるのはなぜですか?

たとえば、次のすべてを試しました。

<customErrors defaultRedirect="Error.aspx" mode="Off">
    <error statusCode="404" redirect="Error.aspx?status=404" />
</customErrors>

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/error.aspx?status=404" responseMode="ExecuteURL" />
</httpErrors>

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/error.aspx?status=404" responseMode="Redirect" />
</httpErrors>

私が知る限り、エラーページにリダイレクトするときに一番上のものは 302 を返し、2 番目のものは何らかの理由で 200 を返し、最後のものも 302 を返します。私はまだ 404 (または何でも)他のエラー コード) が表示されますが、わかりやすいメッセージが表示されます。

エラーページで別の応答を返すことができることに気付きましたが、それはエラーページに 404 コードを与え、元の要求で 302 を保持しているようです。

私が何かを見逃していない限り...

4

1 に答える 1

4

そうです、ASP.NET が有効になっていると、少しファンキーな動作をしますcustomErrors。つまり、error.aspx ページで応答コードを設定redirectMode="ResponseRewrite"し、具体的に設定することができます。customErrors

ここで詳細をブログに書きました: ASP.NET エラー ページを検索エンジンから除外します

于 2013-06-12T21:02:31.350 に答える