导读:官网最容易忽略的页面其实是 404。链接失效、栏目改版、资源被删,访客和搜索引擎爬虫都会踩空。本文给出 404 的三层处理:状态码语义、友好回退页、死链发现与修复闭环。
HTTP 状态码是搜索引擎和浏览器理解页面的唯一语言。很多站点在页面不存在时返回 200,再在页面里放一句"内容不存在"——这就是软 404。
# 查看站点对不存在路径的真实返回状态码,输出 200 即软 404
curl -s -o /dev/null -w "%{http_code}" https://example.com/no-such-page软 404 的危害:爬虫以为页面存在,反复抓取,浪费配额;无效页面长期留在索引里,稀释站点整体质量。硬 404(返回 404 状态码)才是正确语义,明确告诉搜索引擎"这个地址没有内容"。
状态码正确只是第一步,访客体验同样重要。一个合格的 404 页应同时具备三件事:
# nginx 中配置自定义 404 页并保持正确状态码
error_page 404 /404.html;
location = /404.html {
internal;
default_type text/html;
}// 404 页内嵌站内搜索回退:从当前 URL 提取疑似关键词预填
const seg = window.location.pathname.split('/').filter(Boolean).pop();
if (seg) {
const box = document.querySelector('.search-box input');
if (box && !box.value) box.value = decodeURIComponent(seg);
}要点:404 页必须小而有用,不要堆装饰图;站内搜索预填用户输入过的关键词,减少一次输入成本。
死链有固定来源:
参数化 URL 最隐蔽:它看起来是"正常页面",实际内容为空或重复,属于另一种软 404,要在 nginx 层统一收敛,或用 canonical 指向规范地址。
发现死链要建三条通道,而不是等用户投诉。
通道一:访问日志里找 404。
# 统计当日 404 最多的路径
awk '$9 == 404 {print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -30通道二:定期用爬虫工具全站扫内部链接,注意设置 UA 和抓取间隔,别把自己站点爬挂了。
通道三:监控告警。把 404 状态码占比作为指标,超过阈值(如 1%)触发通知。占比异常升高通常意味着一次改版或功能下线出了问题。
# 采样 404 占比,超过 1% 输出告警
total=$(wc -l < /var/log/nginx/access.log)
notfound=$(awk '$9 == 404' /var/log/nginx/access.log | wc -l)
awk -v a="$notfound" -v b="$total" 'BEGIN {r = a/b*100; if (r > 1) print "404 ratio too high: " r "%"}'发现死链后按三级处理:
# 栏目改版的批量 301 迁移示例
location ~ ^/old-news/(.*)$ {
return 301 https://example.com/articles/$1;
}注意:301 只用于"永久迁移";临时下线用 302。迁移后重新提交 sitemap,并观察一段时间内 404 曲线是否回落。
404 与死链处理看起来是"边缘功能",做扎实后对站点质量和访客留存都有直接收益。同类分层在乔拓云企业网站的站点设置模块中有对应实现,配置项与监控逻辑可以按本清单直接对齐。
把 404 处理到位,本质是堵住"用户踩空"和"搜索引擎踩空"两类流失。它不复杂,但需要状态码语义、回退体验、发现机制和修复闭环同时成立——先用本文清单排查,再逐步补监控,站点质量会稳定向上。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。