Apache访问日志是排查404死链最直接可靠的依据,记录状态码、请求路径、Referer等关键字段,通过grep、awk等命令可精准提取高频404路径及来源页面,并结合时间范围、User-Agent和CMS后台进行根因分析与持续监控。

Apache 的访问日志(access.log)是排查 404 死链最直接、最可靠的原始依据。它记录了每一次 HTTP 请求的完整信息,包括状态码、请求路径、来源 IP、用户代理和 Referer(来路页面),能精准定位哪些链接失效、谁在访问、从哪点进来的。
确认日志中包含关键字段
确保你的 Apache 日志格式启用了 %>s(状态码) 和 %{Referer}i(来路 URL),典型配置如下:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined如果日志里没有 Referer 或状态码缺失,就无法判断是用户主动输入错误,还是站内其他页面链接指向了已删除的内容。
用命令快速提取全部 404 请求
在服务器终端执行以下命令,可高效筛出所有 404 记录,并按请求路径去重统计频次:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- grep " 404 " /var/log/apache2/access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -20 —— 查看被访问最多前 20 个 404 路径
- grep " 404 " /var/log/apache2/access.log | awk '{print $11}' | grep -v "-" | sort | uniq -c | sort -nr | head -10 —— 查看哪些站内页面(Referer)引来了最多 404
注意:Referer 字段为空或为 “-” 表示直接输入 URL 或书签访问;若大量来自某篇文章或栏目页,则说明该页面存在未更新的内部链接。
结合时间范围与真实用户行为分析
不要只看总量,要关注近期高频出现的 404:
- 用 awk '$4 > "[15/Aug/2026:00:00:00" 过滤最近三天的日志,避免旧爬虫或测试请求干扰判断
- 检查 User-Agent 字段,区分真实用户(Chrome、Safari)和搜索引擎蜘蛛(Baiduspider、Googlebot)——若百度蜘蛛频繁抓取某 404,说明该链接仍被收录,需尽快处理
- 对高频 404 路径,反向查 CMS 后台或数据库,确认对应内容是否被误删、归档或改名;若已下架,应配置 301 跳转或补充到自定义 404 页面的推荐列表中
日常监控建议
把日志分析变成可持续动作:
- 每天定时用脚本抓取前 10 个新增 404 路径,邮件通知负责人
- 将高频 404 路径自动同步到 Redirection 插件或 Nginx 配置中,生成 301 规则
- 每两周导出一次 Referer 分布,检查是否有栏目页、导航栏或侧边栏链接长期未维护
日志不会说谎,它清楚地告诉你:哪里断了、谁在找、为什么找。盯住它,死链就藏不住。

















