日志样式

站长平台抓取诊断失败和https扯不清的关系

  当百度开始推荐大家使用https的时候,那么自然的百度肯定会对https站点有所优待。小编当初也是这样想的,于是对我的新建站点https://www.cdwenhua.cn/第一时间也配置了SSL证书,将http全站跳转到https上。可是效果却不理想,后面我发现,高质量的原创文章很少收录,就连抓取频率都很低很低,那这是为什么呢?

  直到一个多月后,我在抓取诊断的时候发现猫腻。之前也有过抓取诊断,有成功有失败,我大意的认为是网络的原因导致的失败,于是便没有深入的去追究这个问题。直到发现我的网站抓取频率是在是太低,我在注意到这个问题。本来,正常来讲的话,网站能正常打开那么就不会存在抓取失败的情况,可是在我这里的确是出现了这个问题,那到底是怎么回事呢?

  在提交了反馈、ping过了网络、检查了返回状态码、多台设备测试网站打开情况以后,我在注意到我的返回码是有问题的。我发现我的顶级域名cdwenhua.cn以及www.cdwenhua.cn返回的转股柜台码都是302,跳转到的目标域名是https://www.cdwenhua.cn/于是我就知道问题出在这里了。

  然后,我立马去关闭掉https功能,在站长平台也退出https,然后再来抓取诊断,这个时候就发现,无论是pc的ua还是移动的ua蜘蛛,抓取到的状态都是成功的,大家可以看见之前抓取的https状态码几乎都是失败,而去掉https之后,抓取的http都是成功的。

站长平台抓取诊断失败和https的关系

  其实,到这里大家都清楚了,并不是蜘蛛抓取https会失败,而是我在一开始配置https的时候就没有做好,正常情况下是域名301到https上,而不是302到https上。因为301是永久性的跳转,而302是临时跳转,那么蜘蛛在抓取的时候发现是302临时跳转,就可能会出现抓取失败的情况。

  一般的操作流程是,我们先提交301跳转,将不带www的域名跳转到带www的域名上,然后再去配置SSL证书,将站点跳转到https上,这样就容易出现我这种情况。现在给大家的建议是,域名解析好以后,先不要做301跳转,直接去配置SSL证书,当配置完成通过https能访问到站点的时候,在htaccess文件中加上以下语句:

  RewriteCond %{SERVER_PORT} 80

  RewriteRule ^(.*)$ https://www.域名/$1 [R=301,L]

  RewriteCond %{HTTP_HOST} ^顶级域名 [NC]

  RewriteRule ^(.*)$ https://www.域名/$1 [L,R=301]

  这样,即可实现顶级域名(即不带www的域名)和www的域名都可正常301到https上,这样蜘蛛在抓取的时候,就不会抓取失败了。这个方法是针对Apache服务器的,关于IIS等服务器环境的需要另寻方法。关于Apache服务器怎样将http跳转到https我们已经做过介绍,这里不再多说。

本文地址:https://www.cdwenhua.cn/jiqiao/86.html