IIS 404自定义错误:URL返回响应代码200而不是
我试图使用IIS6返回自定义404页面。 (我有一个网站,主要是使用移动类型构建的.shtml页面)。我试过2种方法:IIS 404自定义错误:URL返回响应代码200而不是
1)在IIS中设置404错误处理程序,输入“file”,路径为\ 404.html。这工作,但它也意味着我不能导入我的网站的页眉和页脚(因此.shtml)尝试将404错误处理程序指向默认404页面中的404.shtml结果...我想IIS可以不处理404中的shtml文件。
2)将类型设置为“URL”。这很好,除了响应代码不再是404!它是一个200.
我怎样才能让IIS响应404响应代码与我的404.shtml文件的内容?
鉴于它的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中的shtml文件是包括和执行。我会在星期一尝试这个,谢谢 – Joel 2010-02-28 15:06:56
当我发布这个建议时,我也想知道,但我认为这至少值得一提。希望它会起作用。 – lostriebo 2010-02-28 23:13:12
谢谢,我去了使用URL /404.asp的路线。这工作相当好。再次感谢! – Joel 2010-03-19 20:51:31