使用IIS 7 Url重写模块时自定义404页面

dre*_*wta 6 asp.net iis-7 url-rewriting http-status-code-404

我差不多完成了对现有网站进行重大改写和重新设计/重组的工作,这些网站获得了大量流量.我一直在使用IIS 7 Url重写模块来启用无扩展和SEO友好的URL,以及将旧页面的请求重定向到新站点结构中的适当页面.它一直很顺利,但我正在研究如何设置自定义404页面并受到阻碍.到目前为止,我已经在web.config的节点中设置了以下代码:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" subStatusCode="-1" />
  <error statusCode="404" prefixLanguageFilePath="" path="/404.htm" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

问题是,它工作,但不完全!如果我转到一个不存在的URL,我确实得到了我的自定义404页面,但请求获得200 OK状态代码作为响应而不是所需的404.我已经摆弄了httpErrors节点的各种属性但没有运气.有谁知道如何显示自定义404页面并返回实际的404状态代码?

谢谢!

Bri*_*ter 3

为了让我们的自定义 404 处理程序正常工作,我们必须执行以下操作:

    <customErrors defaultRedirect="ErrorPage.aspx" mode="On">
        <error statusCode="500" redirect="ErrorPage.aspx" />
        <error statusCode="404" redirect="/404.aspx" />
        <error statusCode="403" redirect="ErrorPage.aspx" />
    </customErrors>
Run Code Online (Sandbox Code Playgroud)

    <httpErrors errorMode="Custom">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
    </httpErrors>
Run Code Online (Sandbox Code Playgroud)

实际上我认为我遇到了同样的问题,我只指定了一种类型的错误。这可能不适用于无扩展 - 但希望它能让您走上正确的道路。