Z-Blog 站的 404 页面该怎么做:别直接返回首页
很多主题的 404 处理方式是「跳转到首页」。这看起来友好,其实对收录不利。为什么不好跳转意味着原本的 404 状态码变成了 302 或 200。搜索引擎会认为那个不存在的地址有效,于是反复来抓,还把它计入索引。正确做法返回真正的 404
见过太多 Z-Blog 站点的 404 处理方式是这样的:访问一个不存在的地址,页面刷一下,跳回首页了。站长觉得体验挺好,用户没看到报错,皆大欢喜。但从搜索引擎的角度看,这是个挺糟糕的做法。
为什么不能把 404 跳成 301 到首页
当搜索引擎蜘蛛访问一个早已不存在的 URL,它得到的结果应该是「这个地址确实没了」。这时候返回 404 或者 410,蜘蛛会把这个地址从索引里清掉,干净利落。
但如果你用 301 把它跳到首页,蜘蛛收到的信号是「这个地址永久搬家了,现在的内容在首页」。于是它会把这个旧地址的权重算到首页头上。听起来是好事,实际上不是——
- 大量不存在的地址都指向首页,等于给蜘蛛制造了几百上千条重复的「搬运声明」,它会怀疑你的站点结构出了问题;
- 真正的首页本身就少了这些权重的意义,因为它接收的是一堆无关链接;
- 最麻烦的是,蜘蛛会记住「这个站的 404 都跳首页」,之后你真正需要的 404 判断也失效了。
Z-Blog 默认是怎么处理的
Z-Blog 默认并不会做任何跳转。访问不存在的地址,核心会走 ZBP_404 的流程,返回真正的 404 状态码。这个默认行为是对的,不需要改。
真正需要改的是「404 页面长什么样」。默认的 404 页面往往就一行字,或者干脆是主题的错误模板,用户到这基本就关掉了。
一个像样的 404 页面该有什么
不用花哨,四件事做到就行:
- 明确告诉用户地址错了。一句「这个页面找不到了」,比「404 Not Found」友好得多,也比自动跳转诚实。
- 给一条回去的路。首页链接、搜索框,这两个必须有。有搜索框的 404 页面,用户往往愿意再试一次。
- 给几个相关的去处。列出站点最新的几篇文章,或者热门分类。用户原本想看的东西没了,但可能对你别的内容感兴趣。
- 保留状态码。这一点最容易被忽略:页面做得再好看,只要状态码不是 404,前面三条的意义就打折了。
在 Z-Blog 里怎么落地
主题目录下一般都有 404.php(有的主题叫 error.php),改这个文件就行。里面可以正常调用站点的模板标签,比如最新文章列表、分类列表,跟普通模板一样写。
验证方式很简单:访问一个肯定不存在的地址,比如 你的域名/post/999999.html,然后看浏览器的开发者工具,Network 面板里那个请求的状态码应该是 404。如果显示 301 或 200,说明有地方在干扰,常见的是伪静态规则把不存在的路径也重写了,或者主题的 header.php 里有跳转代码。
顺带说一句 410
410 的意思是「这个页面永久删除,不用再来了」,比 404 更明确。对于那些你主动删掉、以后也不会恢复的文章,返回 410 理论上更好。但 Z-Blog 没有现成的 410 开关,要做得自己写插件,收益不算大。对绝大多数站点来说,老老实实返回 404 就够了,别在这上面花太多时间。
一句话总结:404 不是错误,是信息。你越诚实地告诉搜索引擎「这个没了」,它越信任你对整站状态的判断。