虽说如今的百度搜索引擎几乎以及放弃中小网站了,但是又总是出现一堆对网站首页动态参数的收录,以致于首页重复收录造成了网站首页排名的混乱,甚至有时候真正的首页会被这些具有杂乱动态参数的页面所顶替,归根结底就是百度不支持 canonical 标签属性,不然也不会存在这个问题,这就是前段时间我们泪雪网所遇到的一个小问题,对此子凡就给大家来分享一下这个解决方案。
首先我们泪雪网是采用 WordPress 搭建,采用 Nginx 的 Web 环境,并且通过宝塔面板来进行服务器管理,虽然可以通过 Nginx 规则来屏蔽首页的动态参数,但经过测试可能会存在误伤和不完整的情况,并且其中一个问题就是宝塔面板提供的防火墙 bug 导致搜索引擎蜘蛛抓取也会出现 btwaf 参数的跳转验证,当然这个问题目前似乎已经修复,可是对于网站的影响已经造成,就需要将这些动态页面针对百度搜索蜘蛛返回 404 状态,然后借助百度搜索资源平台的死链提交移除这些带有动态参数的首页收录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // 针对百度蜘蛛访问带有动态参数的 URL 返回 404 错误 add_action('template_redirect', 'fanly_redirect_baidu_spider_btwaf'); function fanly_redirect_baidu_spider_btwaf() { // 获取 User-Agent 和请求的参数 $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; $query_string = $_SERVER['QUERY_STRING'] ?? ''; // 检查是否是百度蜘蛛 if (strpos($user_agent, 'Baiduspider') !== false) { // 检查 URL 参数是否符合 ?btwaf=数字 格式 if ( preg_match('/^btwaf=d+$/', $query_string) || (is_home() && !empty($query_string)) ) { // 返回 404 错误 status_header(404); nocache_headers(); //include(get_404_template()); //exit(); } } } |
使用方法依旧是将以上代码复制到当前 WordPress 主题的 functions.php 文件中即可,其中有注释了引入 404 模板的操作,主要是兼容 404 的状态码和用户体验,这样百度提交死链验证依旧是 404 状态,而正常用户通过搜索结果进入就不是 404 页面,如果想要对用户也直接显示 404 页面就将注释移除即可。
除了将以上代码应用到 WordPress,还需要将已经被百度收录的带有杂乱动态参数的 URL 整理并通过百度搜索资源平台进行死链提交才能彻底解决问题。百度死链提交包含“快速死链、普通死链”,有权限的站点可以通过快速死链提交,没有的在网站根目录建立一个 txt 文本将死链放进去,然后提交普通死链,处理还是比较快,耐心等待即可。
由于主要是宝塔面板防火墙造成的主要问题,加上一些杂乱的动态参数,所以代码中就进行两个判断使其更加的准确,而且 btwaf 的参数是对整站生效。以上也只是子凡我根据我们具体情况实现,大家还可以举一反三的针对不同的搜索引擎以及不同的情况进行不同场景的使用需求修改,这里我就不在泪雪博客展开来讲了。
更多关于WordPress优化及疑问可以添加QQ群:255308000
除非注明,否则均为泪雪博客原创文章,禁止任何形式转载
本文链接:https://zhangzifan.com/wordpress-homepage-args-return-404.html
留言评论