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

Joe*_*oel 6 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文件的内容?

los*_*ebo 6

鉴于它是IIS,添加

<% Response.Status = "404 Not Found" %>
Run Code Online (Sandbox Code Playgroud)

到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执行此操作.请注意,这远非理想的解决方案,因为现在所有的.shtml文件都将由asp.dll处理.这可能会导致页面呈现得更慢(假设asp.dll处理文件比ssinc.dll更慢,因为更复杂)并违反了最小权限原则.

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