聊聊状态码 410和404


大家好,我是Neo。

昨天我们聊了网站改版后如何处理谷歌狂爬旧链接的问题,其中提到了404 Not Found410 Gone这两个状态码。文章发出去后,好几位朋友在后台问我:“Neo,404和410到底有啥区别?我应该用哪个?你说410更好,好在哪?”

问得好!这确实是很多独立站运营在做SEO时会混淆的一个点。用对了,能让谷歌秒懂你的意图,节省宝贵的抓取预算;用错了,就可能导致404错误居高不下,影响新页面的收录速度。

今天,我就把404和410掰开揉碎了,用最直白的语言和实战案例,给大家好好讲清楚。

一、先听懂“黑话”:404和410的真实含义

想象一下,谷歌蜘蛛是个快递员,每天来你的网站(公司)取件(爬取页面)。

404 Not Found:前台说“我找找看,但现在没找到”

当快递员要找一个叫“旧页面”的包裹时,你的前台(服务器)查了一下,回复说:“暂时没找到”。

这个回复很模糊。包裹是暂时放错地方了?还是彻底丢了?快递员不确定。所以,他会觉得这可能是个临时问题,过几天会再来问一次、再来问一次……直到他确信这个包裹真的永远不会有了,他才放弃。

这就是404 Not Found的本质:一个不确定的、暂时性的“未找到”信号。

410 Gone:老板直接说“这东西已经扔了,以后别来了”

还是那个快递员,来找“旧页面”包裹。这次,你(网站所有者)直接告诉他:“这个包裹已经被永久销毁了,以后再也不会有了,你也别再为这个包裹跑来我这儿了。

这个回复就非常明确、强硬。快递员一听就明白了,他会立刻在他的任务清单上划掉这个包裹,并且再也不会来为它白跑一趟。

这就是410 Gone的本质:一个确定的、永久性的“已删除”声明。

二、实战对比:404 vs 410,差距到底有多大?

为了让大家看得更清楚,我整理了一个表格,这也是我根据谷歌官方的说明和自己的实战经验总结出来的。

对比维度 404 Not Found 410 Gone 结论
对谷歌的信号 “暂时找不到,你过几天再来看看?” “永久删除了,以后永远别来了!” 410信号更强硬、更明确
谷歌停止爬取速度 慢。 谷歌会反复来确认好几次,这个过程可能持续几周甚至几个月。 快。 通常一两天内就显著降低爬取频率,一周左右就基本不来了。 410能更快阻止无效爬取
从谷歌索引删除速度 慢。 页面可能会在搜索结果里停留很长时间,才被慢慢移除。 极快。 谷歌会优先处理410,页面会更快地从索引中消失。 410能更快清理搜索结果
对抓取预算的影响 持续浪费。 谷歌的反复确认会消耗你宝贵的抓取预算。 快速释放。 谷歌很快就不来了,预算被节省下来给你的新页面。 410是优化抓取预算的利器

谷歌搜索中心的大佬John Mueller也亲口说过:

“如果你确定页面永远消失了,就用410。搜索引擎会比处理404快得多地放弃它。”

简单一句话总结:404是“失联”,410是“官宣死亡”。

三、我该用哪个?场景化选择题

讲完了理论,我们来看实战。

选择404 Not Found的场景:

404更像一个安全网,适用于你不确定未来的情况。

  1. 页面临时下线: 比如一个B2C商城的某个商品暂时缺货,你可以先让它返回404,等补货后再恢复。
  2. 不确定是否恢复: 某个功能或服务暂时停用,但未来有可能重新上线。
  3. 意外删除: 你不小心删除了一个页面,在恢复它之前,服务器会自动返回404。

必须选择410 Gone的场景:

410是你的“断舍离”工具,适用于你确定内容永不回头的情况。

  1. 网站改版后彻底废弃的旧URL: 这是最常见的场景。比如你的B2B网站,旧的产品页面是 site.com/product-abc.html,改版后换成了全新的 site.com/products/model-xyz,旧的URL就可以设置为410。
  2. 永久下架的产品或服务: 比如某款手机壳已经停产,未来也不会再卖了,相关的页面就应该用410。
  3. 过期的活动或招聘页面: 比如“2024年圣诞节促销活动”页面,活动结束后就应该返回410。
  4. 清理CMS自动生成的无用页面: 像WordPress会自动生成很多 /feed//trackback/ 这样的链接,这些对SEO毫无价值,是抓取预算的重灾区。你应该用410把它们全部干掉。

四、如何设置410?(附代码)

给一个URL设置410状态码并不复杂。

  • Nginx服务器 (nginx.conf文件): 这是我最推荐的方式,性能好,规则清晰。比如,要将所有 /feed/ 结尾的URL都设置为410:

    location ~* /feed/$ {
        return 410;
    }

    如果你想针对某一个具体的页面:

    location /your-old-page.html {
        return 410;
    }
  • Apache服务器 (.htaccess文件):

    # 针对单个页面
    RewriteEngine On
    RewriteRule ^your-old-page\.html$ - [G]
    
    # 针对 /feed/ 结尾的URL
    RewriteRule /feed/?$ - [G,L]

    这里的 [G] 就是 Gone 的意思。

  • WordPress网站: 虽然可以通过修改 functions.php 文件来实现,但我更建议你通过服务器层面来配置。如果一定要用插件,可以找找支持设置410的重定向插件,但请注意插件性能对网站速度的影响。

总结

处理失效链接,是每个独立站运营的必修课。

  • 404 Not Found 是一个“不确定”的信号,告诉谷歌“暂时找不到”,谷歌会反复来确认。
  • 410 Gone 是一个“确定”的信号,告诉谷歌“永久删除了,别再来了”,谷歌会快速将其从索引中移除。

对于网站改版、内容清理后那些你确定永远不会再使用的URL,请毫不犹豫地使用410。这是向谷歌传达最清晰信号、最高效利用抓取预算、最快解决GSC 404报告的“王炸”手段。

别再让那些僵尸页面浪费你的资源了。现在就去检查你的网站,给那些该“安息”的页面一个明确的410吧!

如果你在操作中遇到任何问题,欢迎在评论区留言,我们一起探讨。