相信很多站长遇到过这种情况:网站内的搜索功能被不良分子利用,通过在站内搜索框中不断搜索敏感关键词,产生一大批 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 的后台设置选项下的阅读设置里面就会出现一个文本域,如下图:
将需要屏蔽的关键词输入到文本域里即可,一行一个关键词。英文不区分大小写,下面是搜索效果测试: