搜尋引擎蜘蛛與一般用戶的區別在於 HTTP 請求頭中的 User-Agent。百度蜘蛛包含 Baiduspider,Google 蜘蛛包含 Googlebot。透過判斷 $_SERVER['HTTP_USER_AGENT'],即可識別並允許特定蜘蛛訪問,其餘請求返回 404。
function isAllowAccess($directForbidden = FALSE) {
$allowed = array('/baiduspider/i', '/googlebot/i');
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$valid = FALSE;
foreach ($allowed as $pattern) {
if (preg_match($pattern, $user_agent)) {
$valid = TRUE;
break;
}
}
if (!$valid && $directForbidden) {
exit("404 not found");
}
return $valid;
}
if (!isAllowAccess()) {
exit("404 not found");
}
isAllowAccess(TRUE);
require_once 引入$allowed 陣列支援更多搜尋引擎(如 Bing、Yahoo 等)