网上很多修改教程,这些教程都不是彻底修改,只是把默认搜索地址做了跳转,跳转到新的搜索地址。本文这个方法是彻底禁用WordPress默认搜索地址,然后新建一个新的默认搜索地址,非常的彻底。
WordPress默认搜索地址是什么,https://shuipingtu.com/?s=xxx ,这样子的,如果你的网站不小心被机器扫描到,它们就会利用这个搜索大量的垃圾词语,形成恶意访问占用服务器资源,量大的话直接就能攻破你服务器了。
如果你的运气不好的话,没有设置robots,那么你的网站就成了别人SEO的工具了,多悲惨啊。
那么,如何才晓得自己的网站的默认搜索被恶意访问了呢,最简单的方法就是我上篇文章提到的那个插件Search Analytics。复杂一点的就是看服务器日志了,搜索“/?s=”也能查看。
那么接下来,我们就要来修改WordPress默认搜索地址了,
第一步:在主题functions.php里面添加下面的代码
define('DEFAULT_QUERY_PARAMTER','s'); //这个是默认搜索参数
define('SELF_FRONT_QUERY_PARAMTER','so');//这个是你自己设置的搜索参数
//允许,自定义的查询关键字,否则,前台自定义的关键字会被过滤掉
add_filter('query_vars',function($vars){
//只针对前台
if(!is_admin()){
$vars[] = SELF_FRONT_QUERY_PARAMTER;
}
return $vars;
});
add_filter('request', function($search_vars){
//后台的请求,依然通过s,不用处理
//前端用户的正常搜索,就看看是不是自定义的参数
if(!is_admin()){
if(isset($search_vars[DEFAULT_QUERY_PARAMTER])){
http_response_code(503);
die();
}
//如果存在自定义的搜索,更换为s参数
if(isset($search_vars[SELF_FRONT_QUERY_PARAMTER])){
$search_vars[DEFAULT_QUERY_PARAMTER] = $search_vars[SELF_FRONT_QUERY_PARAMTER];
}
}
return $search_vars;
});
上面这段代码有两个意思
1,让WordPress默认搜索地址“/?s=”失效并出现503错误;2,把默认搜索地址改成“/?so=”
第二步:部署新的默认搜索地址
通过上面的代码,已经把默认搜索地址改成了“/?so=”,但是你网站里面的代码却还没有被修改过来,于是你得手动替换。替换也很简单,就是在你主题有“s”的地方调用上面那段代码。再简单点,在有搜索框的代码里面把name="s"里面的s换掉。
如何调用?下面这个代码
《?php echo SELF_FRONT_QUERY_PARAMTER; ?》
(把 《》换成 <>)
具体操作,就得看你具体使用的主题,以及你主题的搜索框在什么位置,以现在我用的这个主题为例。
我在菜单导航上面有个搜索框,这个位置是header.php,于是我打开header.php,在里面找到name="s"。然后我用上面的调用代码,换掉s。完成。
如果你确实不晓得你的搜索框在哪个代码里面,最简单最笨的方法,就是把你主题所有代码全部打开,然后搜索name="s",然后替换成新的代码。
具体效果你在本网站自己体验。
PS:如果你不晓得robots是啥,也不晓得怎么写,我下篇文章再来讲讲。

评论0