IIS 404redirect被忽略

所以我有一个非常基本的网站托pipe在IIS中(现在只是直接的原始HTML没有.Net代码)

在我的web.config中,我有以下几点:

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

这是由IISpipe理器添加到web.config – 它反映了我在网上find的404错误的有效configurationredirect到我的自定义404页面。

但是,我仍然得到IIS生成的HTTP Error 404.0 - Not Found页面,只要我去一个不存在的页面。

任何想法我在这里做错了吗?

build立:

  • IIS 10 / IIS 8.5(同时testing)
  • Windows 10 / Windows 8.1(同时testing)
  • 默认应用
  • Chrome,Edge,Internet Explorer,Firefox(全部最新)

每当我的IISconfiguration文件中的configuration元素不会产生我期望的行为时,我所看到的第一个地方总是官方的(也是相当全面的) IIS.netconfiguration参考文档。

如果浏览到httpErrors页面并向下滚动到“Attributes”,您会发现errorMode属性的默认值为“DetailedLocalOnly”,这意味着:

如果请求来自本地计算机,则返回详细的错误信息,如果请求来自外部计算机,则返回自定义错误消息。

啊哈! 如果您的请求导致在本地浏览时出现错误页面,您将得到一个详细的错误页面,而不是您自定义的页面!

就在下面,有一个Custom值的条目:

用您指定的自定义页面replace模块或服务器生成的错误。 此模式在向最终用户提供更友好的错误消息方面很有用。

注意 :即使对于本地请求,此设置也会closures详细的错误。

就是这样,只需将值为Custom的属性errorMode添加到httpErrors节点即可覆盖默认值:

 <httpErrors errorMode="Custom"> <remove statusCode="404" subStatusCode="-1" /> <error statusCode="404" prefixLanguageFilePath="" path="/404.html" responseMode="ExecuteURL" /> </httpErrors>