Portanto, tenho um site muito básico hospedado no IIS (por enquanto, apenas html puro sem código .Net)
No meu web.config tenho o seguinte:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<httpErrors>
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.html" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
</configuration>
Isso foi adicionado ao web.config pelo gerenciador do IIS - e reflete o que encontrei online como a configuração válida para erros 404 para redirecionar para minha página 404 personalizada.
No entanto, ainda recebo a HTTP Error 404.0 - Not Found
página gerada pelo IIS sempre que vou para uma página que não existe.
Alguma ideia do que estou fazendo de errado aqui?
Configurar:
- IIS 10/IIS 8.5 (testado em ambos)
- Windows 10/Windows 8.1 (testado em ambos)
- DefaultAppPool
- Chrome, Edge, Internet Explorer, Firefox (todos os mais recentes)
Sempre que um elemento de configuração em meus arquivos de configuração do IIS não produz o comportamento esperado, o primeiro lugar que procuro é sempre a documentação oficial (e bastante abrangente) de referência de configuração do IIS.net .
Se você navegar até a
httpErrors
página e rolar para baixo até "Atributos", verá que oerrorMode
padrão do atributo é um valor "DetailedLocalOnly" e o que isso implica:Ah! Se sua solicitação resultar em uma página de erro ao navegar localmente , você receberá uma página de erro detalhada em vez da personalizada!
Logo abaixo, há uma entrada para um
Custom
valor:E pronto, basta adicionar o atributo
errorMode
com valor igualCustom
a nohttpErrors
nó para sobrescrever o padrão: