前几天我分享了:网站搜索页面出现大量垃圾网页被收录怎么处理,今天我就接着来分享下WordPress实现死链(404链接)自动收集处理的方法,一些网站上失效的链接,我们可以通过这个方法进行自动收集然后提交到搜索资源平台进行删除索引。
我分享的方法有两种方式实现,你可以选择一种你方便使用的:
- 代码添加到主题functions.php文件
- 代码添加到当前主题404.php文件
准备工作
无论你使用那种方法都需的准备:在你的网站根目录新建一个silian.txt文件;
第一种方法仅适用于WordPress网站,第二种方法PHP网站都可以使用。
配置自动收集代码
新手注意点:
下面代码中需要的文件路径不是你网站域名/silian.txt的路径,而是这个silian.txt在你服务器的绝对路径。
代码的大概意思是:在404页面判断访问用户HTTP请求头是否是百度蜘蛛,如果是的话,则拼接当前请求的URL,添加到准备的死链存放文件中,一行一个。
主题functions.php文件代码
function handle_baiduspider_request() {
if (is_404() && strpos($_SERVER['HTTP_USER_AGENT'], 'Baiduspider') !== false) {
$protocol = empty($_SERVER['HTTPS']) ? 'http' : 'https';
$url = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
if (strpos($url, '.jpg') === false && strpos($url, '.png') === false && strpos($url, '.gif') === false && strpos($url, '.js') === false && strpos($url, '.css') === false && strpos($url, '.php') === false ) {
$filename = fopen("/absolute/path/to/silian.txt","a");
fwrite($filename, $url . "\n");
fclose($filename);
}
}
}
add_action('template_redirect', 'handle_baiduspider_request');
将上述代码添加到你网站主题的functions.php 文件,/absolute/path/to/silian.txt 替换为你自己的路径
404.php文件代码
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Baiduspider') !== false) {
// 如果当前请求由百度蜘蛛发起
// echo "百度蜘蛛访问";
// 获取包含域名的完整URL地址 ↓
$protocol = empty($_SERVER['HTTPS']) ? 'http' : 'https'; // 获取协议,是否是HTTPS协议
$domain_name = $_SERVER['HTTP_HOST']; // 获取主机名
$url = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// echo $url;
if (strpos($url, '.jpg') === false && strpos($url, '.png') === false && strpos($url, '.gif') === false && strpos($url, '.js') === false && strpos($url, '.css') === false && strpos($url, '.php') === false ) {
$filename = fopen("注意:需要绝对路径/silian.txt","a"); // 定义存储URL的text文件路径
fwrite($filename, $url . "\n"); // 写入内容到text文件
// echo "写入代码已执行";
fclose($filename);
}
}
?>
将上述代码添加到你网站主题的404模板文件中,”注意:需要绝对路径/silian.txt”这部分替换为你txt的路径。
添加到百度资源平台
在百度站长资源平台,选择你需要处理的对应站点,资源提交》死链提交》设置一下更新周期》把你死链文件路径写入,然后提交就好了。
提交后过几天看下抓取情况,有时候会很快抓取,有时候很慢。自己确认这个路径可以访问即可。
成功提交后,你可以死链提交页面下方看到死链文件的状态:
这里再说一个站长我之前处理的经验,就是有时候我点击手动更新,百度好像很久都不会去抓取,还不如重新提交快抓取…不知道是bug还是我的错觉。印象中我处理的蛮多个站点都会这样。所以有时候自己的同一个死链文件更新的时候,想要快点抓取,就先删除之前提交的,在提交新的。
常见问题
我非常贴心吧,这都给你们考虑到了,哈哈哈哈哈…
上述文件更新周期怎么写?
我一般是写1天更新一次,没啥情况你照这样写就可以了。
我网站没有404文件怎么处理?
如果你的网站没404文件,那么在你的网站根目录或者是运行目录(例如thinkphp写的程序)新建一个404.php,把下面代码加入这个404.php文件中,然后指定为你网站的404页面,然后按上面流程提交到百度资源平台即可。
<html>
<head>
<title>404 Not Found</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Baiduspider') !== false) {
// 如果当前请求由百度蜘蛛发起
// echo "百度蜘蛛访问";
// 获取包含域名的完整URL地址 ↓
$protocol = empty($_SERVER['HTTPS']) ? 'http' : 'https'; // 获取协议,是否是HTTPS协议
$domain_name = $_SERVER['HTTP_HOST']; // 获取主机名
$url = $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// echo $url;
if (strpos($url, '.jpg') === false && strpos($url, '.png') === false && strpos($url, '.gif') === false && strpos($url, '.js') === false && strpos($url, '.css') === false && strpos($url, '.php') === false ) {
$filename = fopen("注意:需要绝对路径/silian.txt","a"); // 定义存储URL的text文件路径
fwrite($filename, $url . "\n"); // 写入内容到text文件
// echo "写入代码已执行";
fclose($filename);
}
}
?>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
其他问题
上述的方法都是本人亲测可用的,不同程序站点处理细节可能会有少许差异,如果您非技术人员,需要付费技术支持可以联系我哦。