IIS 404自定义错误:URL返回响应代码200

时间:2010-02-26 21:43:47

标签: iis http-status-code-404

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

1)将IIS中的404错误处理程序设置为使用路径\ 404.html键入“file”。这有效,但它也意味着我无法导入我的网站的页眉和页脚(因此.shtml)试图将404错误处理程序指向404.shtml结果在默认的404页面...我想IIS可以不要在404中处理shtml文件。

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

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

2 个答案:

答案 0 :(得分:6)

鉴于它是IIS,添加

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

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

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

<强>更新

我终于能够在IIS 6上运行一些测试。正如您在我的帖子的评论中提到的, .shtml 文件不允许运行脚本命令。因此,至少有两种解决方法:

  1. 不是命名自定义404处理页面 404.shtml ,而是将其命名为 404.asp 。用户永远不应该看到页面的实际名称,因此不应该导致任何问题。请注意,IIS的Web Service Extensions文件夹中的“Active Server Pages”必须设置为“Allowed”。

  2. 修改.shtml的页面扩展名映射以使用asp.dll而不是ssinc.dll。您可以通过选择网站并查看属性 - 来自IIS来执行此操作。主目录标签 - &gt;配置 - &gt;映射选项卡。请注意,这远非理想的解决方案,因为现在所有 .shtml 文件都将由 asp.dll 处理。这可能会导致页面渲染速度变慢(假设 asp.dll 处理文件的速度比 ssinc.dll 更慢,因为复杂性更高)并且违反了principle of least privilege

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

答案 1 :(得分:0)

在IIS管理器中,打开网站(或虚拟目录)的“属性”,然后转到“自定义错误”选项卡。在那里,您可以设置每个错误代码发送的文件,包括404。