我们正在将现有网站从 IIS6 迁移到 IIS7,但在设置 404 错误页面时遇到了一些困难。我们的 404-errorpage 是这样工作的:
- 一个自定义的 ASP 页面会根据一个简短的“特殊”URL 列表(例如http://example.com/limited-offers)检查 URL。
- 如果 URL 已知,它将重定向到该页面的实际 URL。
- 否则,访问者将被重定向到带有 404 状态码的静态错误页面。
使用 IIS6,这就像宣传的那样工作,但使用 IIS7,有些事情发生了变化。IIS7 在遇到定义了错误页的状态码时,将始终显示配置的错误页。如果我们的静态错误页面带有 404-statuscode,这意味着 IIS7 将再次执行自定义 ASP 页面。这导致无限重定向。
我们发现可以通过在 Web.Config 中添加设置来规避这种行为
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
然而,在添加这个之后,我们的自定义 ASP 页面拒绝重定向。在与 Fiddler 检查后,似乎 IIS7 强制使用 404 状态码,覆盖了我们的 302 重定向。
谁能推荐另一种方法来解决我们的问题?