子凡见过有人使用 Shell 脚本自动提交网站 404 死链到搜索引擎的方法,说真的我觉得属实太麻烦了,就当是子凡 Linux 学艺不精找的借口吧,不过作为一个WordPress 优化和一名极致爱好者,就喜欢折腾这样有意义的事情。

其实不瞒大家说,泪雪博客其实有很多链入链接就是死链,因为博客之前有更换过一次域名,所以无形之中就会形成死链,而且搜索引擎也会去抓取,然后在站长平台提示有找不到的页面,虽然之前的域名都做 301 跳转到了新域名,但是子凡又从新的配置了 WordPress 的固定链接,所以几乎之前的所有文章是死链了,然后也就迷迷糊糊的没有心思好好的整理和提交死链,出于对网站优化的态度,还有有这个必要的。好,废话到此打住。

404

百度站长平台有一个死链提交功能,可以提交的文件地址格式为 txt 或 xml,每个地址文件最多包含 50000 个网址且需小于 10MB。所以子凡就以 WordPress 为例,利用 PHP 来实现对网站 404 页面的死链进行输出,实现全自动记录。然后在利用死链提交的抓取周期,从而全面的实现全自动死链提交。

为满足大家需求以及完善代码,子凡已于 2016/11/22 更新升级,防止死链重复记录。欢迎大家更新使用!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//WordPress实现自动记录死链地址(防重复)
if(is_404 && strpos($_SERVER['HTTP_USER_AGENT'],'Baiduspider') !== false){
	$file = @file("badlink.txt");//badlink.txt
	$check = true;
	if(is_array($file) && !empty($file))
	foreach($file as &$f){
		if($f == home_url($_SERVER['REQUEST_URI'])."\n")
		$check = false;
	}
	if($check){
		$fp	=	fopen("badlink.txt","a");//badlink.txt就是在网站根目录的记录死链的文件
		flock	($fp, LOCK_EX) ;
		fwrite	($fp, home_url($_SERVER['REQUEST_URI'])."\n");
		flock	($fp, LOCK_UN);
		fclose	($fp);
	}
}
?>

这就是子凡实现的全部代码,但是需要注意的是,这个代码不是像我们经常所操作的加入到主题的 functions.php 文件,而是添加到 WordPress 主题中的 404.php 页面中,请一定不要问我为什么,因为 WordPress 的原理就是如此。哈哈哈哈

死链提交

通过代码已经实现了死链记录,那么我们就还需要如上图在百度站长平台的死链提交“你的域名/badlink.txt”即可全部完成。

除非注明,否则均为泪雪博客原创文章,转载请以链接形式标明本文地址

本文链接:https://zhangzifan.com/wordpress-badlink.html

发表评论

  1. 明月登楼
    1楼
    明月登楼 4个月前 (03-28)

    我很早就用博主这个代码了,呵呵,不错,新代码更加完善了,马上去用上去!

    • 张子凡
      回复
      张子凡 4个月前 (03-28)
      回复 @明月登楼 :其实我也觉得这个代码挺好用的,对于百度可以非常有效的及时删除链入抓取的死链,让站点更加干净了。
  2. 潇青博客
    2楼
    潇青博客 8个月前 (12-02)

    您好,我想下载您的给百度自动提交死链接的这段404.php代码,就不用再去百度站长平台那里提交了吗!

    • 张子凡
      回复
      张子凡 8个月前 (12-03)
      回复 @潇青博客 :根据文章操作即可
  3. 夏日博客
    3楼
    夏日博客 8个月前 (11-21)

    经常会遇到死链的情况,奇怪的是蜘蛛还老爬。

  4. 99八十一
    4楼
    99八十一 8个月前 (11-20)

    这个好,不用多次提交,方便很多。

    • 张子凡
      回复
      张子凡 8个月前 (11-20)
      回复 @99八十一 :是的,我也是为了偷懒