IIS 404 自定义错误 : URL return response code 200 instead

标签 iis http-status-code-404

我正在尝试使用 IIS6 返回自定义 404 页面。 (我有一个网站,主要是使用可移动类型构建的 .shtml 页面)。我已经尝试了 2 种方式:

1) 将 IIS 中的 404 错误处理程序设置为路径为\404.html 的"file"类型。这有效,但这也意味着我无法导入我网站的页眉和页脚(因此是 .shtml) 尝试将 404 错误处理程序指向 404.shtml 会导致默认的 404 页面...我猜 IIS 可以'不处理 404 中的 shtml 文件。

2)将类型设置为“URL”。这很好用,除了响应代码不再是 404!它的一个200。

如何让 IIS 使用 404.shtml 文件的内容响应 404 响应代码?

最佳答案

鉴于它是 IIS,添加

<% Response.Status = "404 Not Found" %>

到 404.shtml 的顶部应该将响应代码更改为 404。

我不在 Windows 机器上,所以我目前无法对其进行测试以进行验证。

更新:

我终于能够在 IIS 6 上运行一些测试。正如您在我帖子的评论中提到的,.shtml 文件不允许运行脚本命令。因此,至少有两种方法可以解决此问题:
  • 不要将自定义 404 处理页面命名为 404.shtml,而是将其命名为 404.asp。用户永远不应该看到页面的实际名称,因此它不会导致任何问题。请注意,IIS 的 Web Service Extensions 文件夹中的“Active Server Pages”必须设置为“Allowed”。
  • 修改 .shtml 的页面扩展映射以使用 asp.dll 而不是 ssinc.dll。您可以通过选择网站并查看属性 -> 主目录选项卡 -> 配置 -> 映射选项卡,从 IIS 执行此操作。请注意,这远非理想的解决方案,因为现在所有 .shtml 文件都将由 asp.dll 处理。这可能会导致您的页面呈现更慢(假设 asp.dll 处理文件比 ssinc.dll 更慢,因为更复杂)并违反 principle of least privilege .

  • 如果这两个选项都不适合您的情况,那么它仍然是可能的,但解决方案对我来说并不是很明显。

    关于IIS 404 自定义错误 : URL return response code 200 instead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2345038/

    相关文章:

    iis - 用于分析 IIS Web 日志以进行故障排除的工具

    SSL WildCard 证书关闭 iis 网站

    http - Golang net/http 文件服务器在 "/"以外的任何模式上给出 404

    asp.net - ASP.NET网站自定义404错误被服务器错误阻止

    asp.net - 无法配置IIS/Asp.NET来同时处理许多异步请求

    ASP.net 队列长度与应用程序池队列长度

    iis - 502 - Web 服务器在充当网关或代理服务器时收到无效响应。信息系统

    Facebook - URL 返回错误的 HTTP 响应代码

    eclipse - 使用 Macbook PRO 在服务器 tomcat 上运行 servlet 时出现 404 错误