旧文章里引用了已经删除的页面,站内出现几百条指向 404 的内链,蜘蛛每次抓取都会撞上几个。

真正麻烦的地方在于,几个原因的现象几乎一样。文章改版时删除了被引用的页面;URL 结构变化后没有同步更新内链;编辑器里的链接是手写的绝对地址。

批量扫描站内 404 链接

grep -rn 'href="https://www.example.com/old' /www/wwwroot/site/wp-content/

接着把失效内链改成新地址

UPDATE wp_posts SET post_content=REPLACE(post_content,'/old/','/new/');

无法替换的链接直接去掉

curl -s https://www.example.com/a/ | grep -c '404'

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

同样的操作我在测试机上先走了一遍,线上只做验证过的部分。

改完先别撤,确认这几项。站内 404 链接数量降到个位数,抓取过程中不再出现大量无效请求。

提醒一点。内链 404 不会直接降低整站权重,但会浪费抓取预算并削弱页面之间的权重传递,长期积累影响不小。扫描最好每月固定跑一次,改版之后当天补跑一遍。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189