You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置.htaccess,让存在页面返回HTTP 404时跳转至404.php

解决自定义404页面在脚本返回404时不生效的问题

我懂你的痛点——ErrorDocument 404 /404.php确实能处理服务器找不到文件的原生404场景,但当真实存在的PHP页面(比如参数错误的情况)主动返回404状态码时,服务器会认为请求已经被脚本正常处理了,自然不会触发这个重定向规则。

下面是针对这个问题的.htaccess解决方案,借助mod_rewrite捕获所有类型的404响应:

# 先开启重写引擎(如果还没开启的话)
RewriteEngine On

# 捕获所有返回404状态码的请求,转发到自定义404页面
# R=404 确保浏览器最终收到的仍是404状态码,避免影响SEO
RewriteCond %{RESPONSE_STATUS} ^404$
RewriteRule ^ /404.php [L,R=404]

# 保留原有的ErrorDocument规则,兜底处理服务器原生404(可选但建议保留)
ErrorDocument 404 /404.php

几个关键提醒:

  • 确认你的服务器已经启用了mod_rewrite模块(大部分共享主机和VPS默认都开启了,若未开启可联系主机商或修改Apache配置)。
  • 务必在404.php顶部添加状态码设置,否则浏览器会收到200状态码,这对SEO非常不利:
    <?php
    // 主动发送404状态码
    http_response_code(404);
    ?>
    
  • 规则中的[L,R=404]:L表示这是最后执行的规则,R=404强制返回404状态码,确保浏览器和搜索引擎能正确识别这是错误页面。

这样配置后,无论是访问不存在的文件,还是真实脚本返回的404状态,都会跳转到你的自定义404.php页面,同时保持正确的HTTP状态标识。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:00:42