Typecho 实现自动提交 404 死链到站长平台(防重复)

前言

好久没写折腾博客相关技术文章了,今天就记录一下自动记录网站死链到站长平台。

起因

"typecho合集站" 在采集大量文章入库的时候我操作不当导致数据库uid排序错误,为了防止以后出问题执行了【typecho重新排列数据库uid不连续的文章】。

当然不可避免的造成大量 “死链” 导致刚有起色的网站 收录 关键词 流量 暴跌,没办法现在不整理以后问题更大。

82322-3oevw8jqxsp.png

这是百度检测到的,其实还有更多!

思考

最开始我的方案是复制那些百度检测出来的死链,在创建粘贴到txt提交到百度资源平台死链提交

但是这样太麻烦了,没有检测到的怎么办?已经被收录的也有大量死链接,自己检测又麻烦。

后面百度到【WordPress 实现自动提交 404 死链到站长平台(防重复)

代码如下:


<?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);
	}
}
?>

思路:检测是否404页面 -> 获取网页url -> 是否记录 -> 没有记录 -> 添加到 badlink.txt ->百度死链地址提交

12837-1tx1dcwo5yv.png

解决

但是上面的办法不适合 Typecho 没办法自己折腾咯,也很简单的。

思路: 404 页面被访问 -> 获取url -> 判断是否已经记录 -> 记录到 silian.txt


<?php
// 实现自动记录死链地址(防重复)全通用版本
// 夏目贵志
// https://xiamuyourenzhang.cn/
// 死链提交地址:https://ziyuan.baidu.com/badlink/index?site=你网站地址

$pageURL = (@$_SERVER['HTTPS'] == 'on') ? 'https://' : 'http://';
$pageURL .= $_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']; 
// 获取url  判断是否 带https	

$pageURL = str_replace("index.php/","",$pageURL);  
// 看需求是否需要 不需要  //注释掉
// typecho 获取不知道为什么会带index.php 解决办法 替换掉

$s=file_get_contents('silian.txt');  
if(strpos($s,$pageURL) !==false) echo '存在'; 
// 判断 当前url 是否已经被记录  防止重复
 
else file_put_contents("silian.txt", $pageURL."\r\n", FILE_APPEND); 
// silian.txt 会自动生成在 根目录 
// 没有记录 记录当前url 到silian.txt 并且换行

?>

只要复制上面的代码 放到 404.php 页面 随便一个位置就行,silian.txt 会自动创建 记得赋予 404.php 权限 777 让其有写入创建功能

最后

访问 https://ziyuan.baidu.com/badlink/index?site=你网站地址 提交 silian.txt 即可

死链文件:你网站地址/silian.txt

14727-1vj8vfnfce.png

ps:写着文章前提交的,效果很不错。

posted @ 2021-10-18 20:28  夏目贵志ㅤ  阅读(55)  评论(0编辑  收藏  举报