Typecho 實現自動提交 404 死鏈到站長平臺(防重複)
阿新 • • 發佈:2021-10-18
前言
好久沒寫折騰部落格相關技術文章了,今天就記錄一下自動記錄網站死鏈到站長平臺。
起因
"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:寫著文章前提交的,效果很不錯。