网上很多修改教程,这些教程都不是彻底修改,只是把默认搜索地址做了跳转,跳转到新的搜索地址。本文这个方法是彻底禁用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

评论0

请先
不经常更新,所以很少进后台,有啥问题,直接网站底部给我发邮件就行。
显示验证码
没有账号?注册  忘记密码?