404 错误是什么?404 与 403 Forbidden 的区别及修复方法

404 错误(404 Not Found)是 Web 服务器在所请求的 URL 上没有任何内容可显示时返回的 HTTP 状态码。按照 HTTP 标准 RFC 9110 的说法(大意),服务器“没有找到目标资源的当前表示”,或者不愿透露其存在。它并不说明页面是否已永久消失。

免费试用:HTTP 状态码 免费使用,无需注册账号。

它的近亲 403 Forbidden(禁止访问)则不同:页面可能存在,但服务器理解了请求并拒绝执行。本文将介绍什么是 404 错误、403 Forbidden 错误是什么意思、两者与 401 和 410 有何区别,以及如何在不影响 SEO 的前提下发现并修复它们。如需查询其他状态码,可以在免费的 HTTP 状态码列表中搜索。

404 错误是什么?官方定义

404 错误的含义来自当前的 HTTP 规范 RFC 9110 第 15.5.5 节。实际使用中有三点值得注意:

各网站显示的提示语各不相同(“404 Not Found”“Page not found”“HTTP Error 404”),但背后的状态码是同一个。

403 Forbidden 是什么意思?

RFC 9110 对 403 Forbidden 的定义(大意)是:服务器“理解了请求,但拒绝执行”。如果请求带有凭据,服务器会认为这些凭据不足,重复同样的请求也无济于事。页面确实存在,只是你无权查看。

403 Forbidden 错误经常与 401 混淆:

浏览器通常显示“403 Forbidden”“Access denied”或“HTTP Error 403”,而拒绝可能来自网站前端的防火墙或 CDN,而不是网站本身。

404、410、403 与 401 对比一览

状态码 名称 对客户端的含义 常见原因 解决办法
404 Not Found 此 URL 上没有可用内容,可能只是暂时的 页面被删除或移动、链接失效、拼写错误 修正链接、恢复页面或添加 301 重定向
410 Gone 资源已被有意移除,不会再恢复 促销活动已过期、内容已删除 无需处理;移除仍指向它的链接
403 Forbidden 服务器理解了请求并拒绝执行 权限、拒绝规则、防火墙、IP 或国家/地区封锁 需要不同的权限,或在服务器端修改
401 Unauthorized 缺少有效的身份验证 未登录、令牌过期、密码错误 登录或发送有效的凭据

这些名称与 HTTP 状态码参考一致,该参考还涵盖 3xx 重定向。

遇到 404 或 403 错误时该怎么办

如果你是访问者,请按顺序尝试以下步骤:

  1. 检查 URL,看是否有拼写错误,或者长链接末尾的文字被截断。路径可能区分大小写:/Contact/ 和 /contact/ 可能是不同的页面。
  2. 刷新页面。 正在重新发布的页面可能会短暂返回错误。
  3. 在站内搜索。 删除路径的最后一段,或使用网站的搜索框,找到内容被移到了哪里。
  4. 如果是 403,清除该网站的 Cookie 和缓存。 过期的会话 Cookie 可能导致服务器拒绝请求;退出后重新登录也有帮助,原因相同。
  5. 关闭 VPN 或代理。 一些网站和防火墙会用 403 封锁 VPN 地址段或整个国家/地区。
  6. 告知网站所有者,如果失效链接来自该网站本身。

网站为什么会返回 404 Not Found

对网站所有者来说,大多数 404 出于以下原因之一:

网站出现 403 Forbidden 错误的原因

在你自己的网站上,403 Forbidden 错误通常来自:

如何修复 404 错误

正确的修复方法取决于页面发生了什么:

在 Apache 上,这三项设置都可以写在 .htaccess 中:

Redirect 301 /old-guide/ /new-guide/
Redirect gone /spring-sale-2025/
ErrorDocument 404 /404.html

对应的 Nginx 配置是:

location = /old-guide/ { return 301 /new-guide/; }
location = /spring-sale-2025/ { return 410; }
error_page 404 /404.html;

自定义 404 页面应说明页面未找到,保留网站导航,并提供搜索或热门链接,同时必须仍然返回 404 状态码。在 Apache 上,请让 ErrorDocument 指向 /404.html 这样的本地路径:如果使用完整的 https:// URL,Apache 会重定向访问者,原来的 404 状态也就丢失了。

避免软 404(soft 404):页面显示“未找到”,却返回 200 OK。对所有路由都返回 200 的单页应用是常见来源。另外,不要把所有缺失的 URL 都重定向到首页。Google 的网站迁移指南提醒,把大量旧 URL 发送到同一个不相关的目标(例如首页)可能会让用户感到困惑,并可能被视为软 404。

404 错误会影响 SEO 吗?

本身不会。Google Search Central 曾表示,网站存在一些 404 URL 本身并不会对其造成伤害,也不会在搜索结果中对其不利。Search Console 帮助文档补充说,如果页面被移除且没有替代页面,404 不一定是问题,并建议修复你自己链接到的或在站点地图中列出的 404。

有两种情况确实会带来损失。一个曾有排名的页面如果现在返回 404,就会连同其流量一起从索引中消失,因此如果有相关的替代页面,请做重定向。软 404 则会掩盖真实状态,所以 Google 的软 404 错误指南建议对已移除的页面返回真正的 404 或 410,对已移动的页面使用 301。

关于 404 与 410:Google 的文档称,除 429 之外,它对所有 4xx 状态码的处理方式相同,都会把之前已编入索引的 URL 从索引中移除。使用 410 是为了清楚表明你的意图,而不是为了改变排名。对于你希望被编入索引的页面,403 或 401 更糟:Googlebot 不会登录,因此 Search Console 会报告“因访问遭禁而被屏蔽 (403)”或“因未经授权的请求而被屏蔽 (401)”,页面也不会被编入索引。如果防火墙拦截了 Googlebot,请修正该规则。

如何查找失效链接和 404 错误

awk '$9 == 404 {print $7}' access.log | sort | uniq -c | sort -rn | head

在一个包含七个请求的示例日志上,它输出了 3 /old-guide/ 和 1 /Contact/:一个需要重定向的已移动页面,以及一个大写字母用错的链接。

查询任意状态码

免费的 HTTP 状态码参考列出了 63 个标准状态码,从 100 Continue 到 511 Network Authentication Required,分为五类。输入 404 这样的数字或 forbidden 这样的单词,即可看到匹配的状态码、名称以及以页面语言显示的简短说明。它是参考工具,而不是 URL 检查器:它不会抓取你的页面,也不收录 Nginx 的 499 这类非官方状态码。

常见问题

404 错误是我的错吗?

通常不是。你可能输错了 URL,但大多数 404 来自已移动或已删除的页面,以及从未更新过的链接。

删除的页面应该用 404 还是 410?

如果页面是有意移除且不会恢复,410 Gone 是最准确的答案;如果不确定,用 404 也可以。如果内容已移动,请改用 301 重定向。

清除 Cookie 能解决 403 Forbidden 错误吗?

有时可以。如果原因是会话 Cookie 过期或损坏,清除该网站的 Cookie 并重新登录即可解决。如果封锁来自服务器权限、IP 或国家/地区规则,或者是针对 VPN 的封锁,这样做就无济于事。

什么是软 404?

指页面告诉访问者内容不存在,却返回 200 OK 而不是 404。Google 会把这类页面排除在搜索结果之外,并在 Search Console 中标记出来。请返回真正的 404 或 410;如果内容已移动,则返回 301。

404 是客户端错误还是服务器错误?

它属于 4xx 客户端错误类,因为请求的 URL 没有可提供的内容。服务器故障会显示为 5xx 状态码,例如 500 Internal Server Error。

免费试用:HTTP 状态码 免费使用,无需注册账号。