1. 程式人生 > 其它 >Typecho 實現自動提交 404 死鏈到站長平臺(防重複)

Typecho 實現自動提交 404 死鏈到站長平臺(防重複)

前言

好久沒寫折騰部落格相關技術文章了,今天就記錄一下自動記錄網站死鏈到站長平臺。

起因

"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:寫著文章前提交的,效果很不錯。