You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PHP调用Header返回404时,IIS 8.5不显示默认错误页的解决咨询

解决IIS 8.5 + PHP 5.6返回404状态但显示空白页的问题

当你通过PHP代码header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');发送404状态码时,IIS默认只会传递这个状态码,但不会主动替换页面内容为它的默认404错误页——因为它认为PHP已经处理了响应内容(哪怕是空的)。要让IIS显示默认的404错误页,你可以按照以下两种方法操作:

方法1:通过IIS管理器可视化配置

  1. 打开IIS管理器,定位到你的目标网站。
  2. 在功能视图中,双击错误页图标。
  3. 在错误页列表中找到404 - 未找到这一项,右键点击它选择编辑
  4. 在弹出的“编辑自定义错误页”对话框中,选择**“执行URL”**选项,然后输入IIS默认404页的路径(通常是/iisstart.htm,或者你自定义的错误页路径比如/404.html)。
    • 注意:路径要使用相对于网站根目录的格式,不要用本地文件路径。
  5. 点击确定保存设置即可。

方法2:通过web.config手动配置

如果你更习惯直接修改配置文件,可以在网站根目录的web.config中添加以下内容:

<system.webServer>
  <httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
  </httpErrors>
</system.webServer>
  • /404.html替换成你实际想使用的错误页路径,如果想用IIS自带的默认错误页,直接用/iisstart.htm即可。

额外注意事项

  • 确保你的错误页文件确实存在于指定路径,并且IIS有读取该文件的权限。
  • 如果PHP脚本在发送404头之后还有输出内容(包括空格、换行符),IIS会优先使用PHP的输出,而不是替换成错误页——所以要完全用IIS的错误页,记得发送头后不要输出任何内容。
  • 这个问题是IIS层面的响应处理逻辑,和PHP的display_errorslog_errors等配置无关,不用修改php.ini

内容的提问来源于stack exchange,提问作者ajar

火山引擎 最新活动