前言
好久没写折腾博客相关技术文章了,今天就记录一下自动记录网站死链到站长平台。
起因
"typecho合集站" 在采集大量文章入库的时候我操作不当导致数据库uid排序错误,为了防止以后出问题执行了【typecho重新排列数据库uid不连续的文章】。
当然不可避免的造成大量 “死链” 导致刚有起色的网站 收录
关键词
流量
暴跌,没办法现在不整理以后问题更大。
这是百度检测到的,其实还有更多!
思考
最开始我的方案是复制那些百度检测出来的死链,在创建粘贴到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
->百度死链地址提交
解决
但是上面的办法不适合 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
ps:写着文章前提交的,效果很不错。