可以我的網(wǎng)站是偽靜態(tài)的,所以就不想讓它收錄動態(tài)頁面。robots里面加入了禁止抓取這些動態(tài)地址和某些路徑,但是蜘蛛依然每天抓取,而且還收錄了!所以只能強(qiáng)制禁止它訪問。
把下列代碼加入到服務(wù)器配置文件ROOT后面即可
#### 禁止搜索引擎訪問指定文件夾或者路徑 【開始】####
#初始化變量為空
set $deny_spider "";
#如果請求地址中含有需要禁止抓取關(guān)鍵詞時,將變量設(shè)置為y:
if ($request_uri ~* "\?replytocom=(\d+)|\?p=(\d+)|/feed|/date|/wp-admin|comment-page-(\d+)|/go") {
set $deny_spider 'y';
}
#如果抓取的UA中含有spider或bot時,繼續(xù)為變量賦值(通過累加賦值間接實(shí)現(xiàn)nginx的多重條件判斷)
if ($http_user_agent ~* "spider|bot") {
set $deny_spider "${deny_spider}es";
}
#當(dāng)滿足以上2個條件時,則返回404,符合搜索引擎死鏈標(biāo)準(zhǔn)
if ($deny_spider = 'yes') {
return 403; #如果是刪除已收錄的,則可以返回404
break;
}
#### 禁止搜索引擎訪問指定文件夾或者路徑【結(jié)束】 ####
然后測試一下,動態(tài)地址抓取失敗,靜態(tài)地址成功。
還有一種方法就是把代碼直接寫進(jìn)當(dāng)前主題頁的functions.php里面即可。
PHP代碼如下
/*禁止蜘蛛抓取指定路徑代碼*/
ob_start("Deny_Spider_Advanced");
function Deny_Spider_Advanced() {
$UA = $_SERVER['HTTP_USER_AGENT'];
$Request_uri = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];
$Spider_UA = '/(spider|bot|)/i'; //定義需要禁止的蜘蛛UA,一般是spider和bot
//禁止蜘蛛抓取的路徑,可以參考自己的robots內(nèi)容,每個關(guān)鍵詞用分隔符隔開,需注意特殊字符的轉(zhuǎn)義
$Deny_path = '/\?replytocom=(\d+)|\?p=(\d+)|\/feed|\/date|\/wp-admin|wp-includes|\/go|comment-page-(\d+)/i';
//如果檢測到UA為空,可能是采集行為
if(!$UA) {
header("Content-type: text/html; charset=utf-8");
wp_die('請勿采集本站,因?yàn)椴杉恼鹃L木有小JJ!');
} else {
//如果發(fā)現(xiàn)是蜘蛛,并且抓取路徑匹配到了禁止抓取關(guān)鍵詞則返回404或者403
if(preg_match_all($Spider_UA,$UA) && preg_match_all($Deny_path,$Request_uri)) {
//header('HTTP/1.1 404 Not Found');
//header("status: 404 Not Found");
header('HTTP/1.1 403 Forbidden');
header("status: 403 Forbidden");
}
}
}
寫在最后,我在發(fā)布這個篇文章時,發(fā)現(xiàn)發(fā)布按鈕是灰色不可用的。用控制臺檢查發(fā)現(xiàn)有錯誤:Failed to load resource: the server responded with a status of 403 ()
原來是上面規(guī)則中訪問后臺目錄會出現(xiàn)403錯誤。把后臺目錄從上面規(guī)則里刪除即可。
]]>
#禁止Scrapy等工具的抓取
if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}
#禁止指定UA及UA為空的訪問
if ($http_user_agent ~ "opensiteexplorer|MauiBot|FeedDemon|SemrushBot|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|semrushbot|alphaseobot|semrush|Feedly|UniversalFeedParser|webmeup-crawler|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {
return 403;
}
#禁止非GET|HEAD|POST方式的抓取
if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}
]]>