相信很多站長遇到過這種情況:網站內的搜尋功能被不良分子利用,透過在站內搜尋框中不斷搜尋敏感關鍵詞,產生一大批 TITLE 上帶有敏感關鍵詞的垃圾搜尋結果頁 (如下圖) 。由於 Baiduspider 對每個站點的抓取額是有限定的,所以這些垃圾搜尋結果頁被百度收錄,會導致其它有意義的頁面因配額問題不被收錄,同時可能因百度處理垃圾頁面而影響網站正常排名。

以上內容引自百度站長平臺:http://zhanzhang.baidu.com/wiki/336
那麼 WordPress 如何來預防這種惡意的利用呢?其實很簡單在當前使用的 WordPress 主題的 functions.php 加入以下程式碼:
add_action('admin_init', 'wxd_search_ban_key');
function wxd_search_ban_key() {
add_settings_field('wxd_search_key', 'v7v3 搜尋關鍵詞遮蔽', 'wxd_search_key_callback_function', 'reading');
register_setting('reading','wxd_search_key');
}
function wxd_search_key_callback_function() {
echo '<textarea name="wxd_search_key" rows="10" cols="50" id="wxd_search_key" >' . get_option('wxd_search_key') . '</textarea>';
}
add_action('template_redirect', 'wxd_search_ban');
function wxd_search_ban(){
if (is_search()) {
global $wp_query;
$wxd_search_key = get_option('wxd_search_key');
if($wxd_search_key){
$wxd_search_key = str_replace("
", "|", $wxd_search_key);
$BanKey = explode('|', $wxd_search_key);
$S_Key = $wp_query->query_vars;
foreach($BanKey as $Key){
if( stristr($S_Key['s'],$Key) != false ){
wp_die('請不要搜尋非法關鍵字');
}
}
}
}
}
加入該程式碼後在 WordPress 的後臺設定選項下的閱讀設定裡面就會出現一個文字域,如下圖:

將需要遮蔽的關鍵詞輸入到文字域裡即可,一行一個關鍵詞。英文不區分大小寫,下面是搜尋效果測試:
