IIS 8.5 - 返回静态 404 文件时出现错误

Mar*_*cus 5 iis 500-error http-status-code-404 iis-8 iis-8.5

IIS8.5 > 站点 > 我的网站 > 错误页面 > 404

  • 选择“将静态文件中的内容插入到错误响应中”。

  • 取消选中“尝试以客户端语言返回错误文件”。

  • 输入“notfound.html”的路径,我已经验证它在那里。

当我访问一个我知道不存在的页面时,我得到:

The page cannot be displayed because an internal server error has occurred.
Run Code Online (Sandbox Code Playgroud)

为什么我没有获得自定义 404 文件?

我不认为这是一个权限问题,我尝试将“notfound.html”移动到几个地方,其中之一是实际站点 wwwroot 文件夹,它为站点的其余部分提供服务。

kri*_*sFR 3

产生此错误的原因是在 中检测到绝对路径web.config

文件中的节C:\path\to\notfound.html中不允许使用绝对物理路径(如) 。system.webServer/httpErrorsweb.config

现在你有 2 个解决方案:


1.允许ApplicationHost.config文件中的物理路径

默认情况下该文件位于%SystemRoot%\system32\inetsrv\config

找到该文件并编辑它

搜索栏目<httpErrors ..... >

然后添加指令allowAbsolutePathsWhenDelegated="true",如下所示:

<httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath" allowAbsolutePathsWhenDelegated="true">
   ....
   ....
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

保存文件,应该可以工作!


2.使用相对路径

相对路径意味着您必须将自定义错误页面存储在给定网站的根文件夹中。

然后,前往IIS > Sites > mysite > Error Pages > 404

并像这样设置您的自定义错误页面:

在此输入图像描述

点击OK,应该可以工作!


编辑 :

但请注意:

  • 解决方案1发送404 Not Found响应
  • 解决方案2发送200 OK响应