客户在陕西西安市雁塔区做法律咨询服务,网站上线三年多了,一直用的是HTTP。去年听说百度优先收录HTTPS网站,就找人把网站升级成了HTTPS。SSL证书装好了,浏览器也能正常打开,小绿锁也有了,但过了一个多月,百度收录量不升反降,从原来的八百多掉到了五百出头。
先确认HTTPS是否真的生效
用浏览器访问了一下网站,地址栏确实有小绿锁,点开证书详情也没问题。再用curl命令看了一下HTTP的响应头,发现有异常。
输入http://www.域名.com,返回的状态码是302,跳转到了https://www.域名.com。302是临时跳转,搜索引擎会认为这只是临时性的调整,不会把原来HTTP页面的权重传递到HTTPS页面上。
正确的做法应该是用301永久跳转,这样搜索引擎才知道HTTP的页面已经永久迁移到HTTPS了,会把原来的权重和收录传递过去。
检查301跳转的配置
登录服务器,看了nginx的配置文件,发现客户之前找人配置的时候用了return 302而不是return 301。这个细节看起来小,但对搜索引擎来说差别很大。
把配置改成了301永久跳转:
server { listen 80; server_name www.域名.com 域名.com; return 301 https://www.域名.com$request_uri; }
同时确保HTTPS的server块里,不带www的域名也301跳转到带www的域名,把权重集中到一个主域名上。
还发现了一个问题
配置改完之后,用站长工具的抓取诊断测试了一下,发现有些页面的跳转链太长了。比如http://域名.com先302跳到https://域名.com,再301跳到https://www.域名.com,中间转了两次。
每一次跳转都会损失一部分权重传递效率,跳转链越长,权重损失越大。把跳转逻辑重新梳理了一下,让HTTP直接301跳到最终的HTTPS带www地址,一步到位,不再经过中间环节。
另一个隐蔽的问题
检查HTTPS页面的时候,发现有些页面的源代码里还引用了HTTP的资源,比如图片地址写的是http://www.域名.com/uploads/xxx.jpg。这种情况叫“混合内容”,虽然页面能打开,但浏览器会显示警告,搜索引擎也会认为HTTPS不完整。
在数据库里批量把HTTP的资源地址替换成了HTTPS,同时用工具扫描了一遍,确认所有外部引用的资源也都是HTTPS的。
百度站长平台的配置
在百度站长平台里做了几件事:
一是提交了HTTPS版本的sitemap,让百度尽快抓取新协议的页面。
二是使用了“HTTPS认证”功能,告知百度网站已经全站切换到HTTPS。
三是提交了改版规则,把HTTP的URL规则映射到HTTPS的URL规则,帮助百度更快地完成替换。
两周之后的变化
上述调整做完之后,又观察了两周。百度站长后台的抓取数据开始有变化,HTTPS页面的抓取频次慢慢上来了,索引量也止住了下跌的趋势。大概三周之后,收录量开始回升,原来掉下去的那些页面逐渐被HTTPS版本替换回来了。
客户的运营同事在西安雁塔区的办公室里盯着站长后台看了几天,说“总算回来了”。之前她还以为是HTTPS本身的问题,差点想换回HTTP。其实HTTPS是好事,百度、Google都明确表示HTTPS是排名加分项,问题出在跳转配置的细节上。
跟客户解释了一下原理
搜索引擎在处理网站协议变更的时候,主要依赖301跳转来判断页面是否永久迁移。如果是302,搜索引擎会认为原页面还在,只是暂时跳到了新地址,不会把权重传过去。时间长了,原页面可能被判定为“已失效”,新页面又没有承接权重,收录自然就掉了。
客户听完说,之前找人做HTTPS的时候对方只说“装个证书就行”,没人提301和302的区别。其实SSL证书安装只是第一步,后面还有跳转规则、资源替换、站长平台提交这些配套操作,少一步都可能出问题。
顺手检查的其他配置
处理完跳转问题之后,顺便检查了以下几个方面:
一是HSTS配置。在nginx里加了HSTS头部,告诉浏览器以后访问这个网站强制走HTTPS,省掉一次跳转。配置的时候注意先确认全站HTTPS没问题了再加,不然万一有HTTP资源没处理完,加了HSTS之后用户就打不开页面了。
二是检查了SSL证书的完整链。有些浏览器对证书链要求严格,中间证书缺失会报错。用在线工具检测了一下,证书链完整,评分A+。
三是确认了CDN的HTTPS配置。客户网站用了CDN,CDN那边也需要开启HTTPS,并且回源协议要设置成HTTPS或者协议跟随,确保从CDN到源站这一段也是加密的。
一点小结
HTTP到HTTPS的迁移,装证书只是开始。301跳转、资源替换、站长平台提交、CDN配置,每一个环节都要做到位。尤其301跳转这件事,搜索引擎看得非常重,配错了直接影响收录和排名。
如果你也打算把网站升级到HTTPS,或者已经升级了但收录有异常,可以先检查一下跳转状态码是不是301,再看看页面里有没有混合内容。这两个问题排查完,大部分情况都能解决。
