IIS 7 retorna HTTP 200 na página de erro 404 personalizada

5

Configurei com êxito páginas de erro estáticas personalizadas para o IIS7. O IIS7 está atualmente trabalhando como um gateway para um aplicativo Java tomcat. O problema é que, quando a página de erro 404 é exibida, ela é exibida com um cabeçalho de código de status HTTP 200. Eu gostaria de uma maneira de configurar o IIS para continuar a enviar um HTTP 404. A página de erro existe como uma página estática na webroot.

Esta é a parte principal do meu web.config:

<system.webServer>
    <rewrite>
        <rules>
            <rule name="HTTP to HTTPS Redirect" enabled="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="off" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
            </rule>
            <rule name="Reverse Proxy" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://localhost:8080/{R:1}" />
                <conditions>
                    <add input="{R:1}" pattern="error/*." negate="true" />
                </conditions>
            </rule>
        </rules>
    </rewrite>
    <httpErrors errorMode="Custom" existingResponse="Auto">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/error/404.htm" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>
    
por Ben Doerr 22.06.2012 / 20:14

1 resposta

3

Mude para usando responseMode="File" , mas o truque com isso será usar caminhos de arquivo relativos, a menos que você desbloqueie ou defina como verdadeiro system.webServer/httpErrors allowAbsolutePathsWhenDelegated .

Exemplo de trecho de web.config:

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="error4.htm" responseMode="File" />
</httpErrors>
    
por 26.06.2012 / 19:41