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

CodeIgniter3错误日志排查:如何定位触发404错误的页面

定位404资源请求触发页面的方法
  • 自定义CodeIgniter的404日志逻辑
    默认的404日志不会记录来源页面,你可以扩展框架的异常处理类来补充这个信息:

    1. 在application/core/目录下创建MY_Exceptions.php文件
    2. 写入以下代码:
      class MY_Exceptions extends CI_Exceptions {
          public function show_404($page = '', $log_error = TRUE) {
              if ($log_error) {
                  $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '无来源页面';
                  log_message('error', '404页面不存在: ' . $page . ' | 来源页面: ' . $referrer);
              }
              parent::show_404($page, FALSE);
          }
      }
      

    之后新产生的404日志会直接附带触发该请求的来源页面URL,帮你快速定位问题。

  • 查看服务器访问日志
    不管用Apache还是Nginx,服务器的访问日志里都会记录每个请求的Referer字段。你可以根据日志里的404资源路径(比如Assets/js)筛选出对应的记录,就能看到触发请求的页面:

    • Apache示例命令:
      grep "Assets/js" /var/log/apache2/access.log | grep "404"
      
    • Nginx示例命令:
      grep "Assets/js" /var/log/nginx/access.log | grep "404"
      

    输出结果里的Referer值就是你要找的触发页面。

  • 临时添加全局请求记录
    在项目入口文件index.php里加入一段代码,记录所有请求的路径和来源:

    $request_uri = $_SERVER['REQUEST_URI'];
    $referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '无来源';
    error_log("请求路径: $request_uri | 来源: $referrer", 3, APPPATH.'logs/referer_logs.log');
    

    运行一段时间后,打开application/logs/referer_logs.log,就能找到对应404资源的触发页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 04:50:25