我几乎完成了对现有网站进行重大改写和重新设计/重组,以获得大量流量。我一直在使用IIS 7 URL重写模块来启用无扩展和搜索引擎友好的网址,并将旧页面的请求重定向到新网站结构中的相应页面。它进展顺利,但我正在研究如何设置自定义404页面并阻碍它。到目前为止,我已经设置了下面的代码在web.config中的节点:使用IIS 7 URL重写模块时自定义404页面
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.htm" responseMode="ExecuteURL" />
</httpErrors>
的事情是,它的工作原理,但并不完全!如果我去了一个不存在的URL,我确实得到了我的自定义404页面,但请求获得了200 OK状态代码,而不是所需的404。我已经调整了httpErrors节点的各种属性,但没有运气。有谁知道如何显示自定义404页面并返回实际的404状态代码?
谢谢!
感谢您的答复。我已经尝试了一些类似于您所建议的内容并重新访问的内容。我可能会错过一些东西,但即使这些东西都设置了,我仍然看到一个200而不是404。也许这是整个无延伸的东西,正如你所说的 - 不确定。我终于实现了一个解决方法,并且在404 ASPX页面的Page_Init事件中明确地将响应状态代码设置为404。它感觉很不舒服,但我现在就拿它来。如果其他人有更优雅的解决方案,请告诉我。谢谢! – drewta 2011-05-02 05:22:12
@drewta,可能有一些IIS设置指定IIS在没有扩展名时将所有流量发送到ASP.NET运行时。例如,我必须指定所有CFM(旧网站是一个冷聚变网站)应该去ASP.NET,所以我的自定义404处理程序可以处理它。由于时间的限制,我花了大约10分钟的时间试图在我放弃之前得到无限延伸。祝你好运。 – 2011-05-02 06:02:56
当抛出异常时,此设置将更改当前的URL – xiaoyifang 2014-03-07 04:54:54