后台看收录,条数在涨,可点开任何一条,地址栏里都是测试域名。site:查出来的标题和摘要都对,唯独落点不在正式站上。收录做起来了,只是落在了别人家门口。
问题多半出在head里的canonical。它等于告诉引擎,这一页的正版在哪个地址。Google的文档写明了它是提示而不是指令,引擎可以不采纳,写错了页面照样返回200,也不会给出任何报错。
单页写歪了,引擎通常直接忽略。可全站每一页都指向同一个测试域,指向就成了一份一致的声明,这时候被忽略的反而是正式站自己,得从模板源头改回来。
打开任意一条详情页,F12看head里那一行,域名对不上就是它。要批量看,用curl -s把页面取回来,再管道给grep找canonical那一行,首页、列表、详情各抽一条,三类模板往往分开写,改一处覆盖不到其余的两类。
最常见的来源是模板。主题头文件里把域名写死,测试站验收完,整份模板连同那一行一起搬到正式站,后台设置改得再对,前台输出的还是写死的那串字符。
另一种是新旧域名都还能打开,两边都返回200,没有一条301把旧的指过来,引擎看到两份一样的内容。还有一种是缓存:页面缓存或CDN里存着测试期生成的HTML,源站改过而缓存没刷,换个网络打开又是旧的。
改的时候canonical要用当前站点域名变量输出,别手写。这里先记住一条:robots.txt不认noindex这条指令,noindex要生效,前提是爬虫抓得到这一页——一边在robots里Disallow、一边指望head里的noindex,两边会互相抵消,页面可能以只有标题、没有摘要的样子留在结果里。所以要挡测试环境:想不被收录,加noindex,但要让它抓得到;想不被访问,用基本认证。旧域名整站301到正式域,前提是旧域的解析还指着这台服务器。这一项最常被跳过,很多人配完这条就不再看,等收录变了才回头查解析还指不指着这台。
改完用curl抽查三类页面,head里那行的域名应当是当前域名。再看Google Search Console的网址检查,里面会分别列出用户声明和Google选择的规范网址,两者不一致就说明还没生效;用百度的话,后台只有索引量和抓取类数据,看不到这一层。抽查放到缓存刷完之后再做,卡在改完当天看不出变化。
canonical、301、sitemap三处得指向同一个地址。只改canonical,301还指着旧域,sitemap里还是老链接,三份信号互相打架。三份里最容易漏掉的是sitemap,它往往一个月才更新一次。三处都改完再抽查几条:落点对上了,说明三份信号已经一致;还不对,先看sitemap最近一次生成的时候是不是还带着旧域。
A5创业网 版权所有