同一个页面,canonical 写的是不带参数的版本,站内链接用的是带参数的版本,sitemap 里又是第三种写法。这时候讨论“为什么还不收录”,其实是在三个互相矛盾的信号里找答案,很难有结论。
为什么口径不一致会拖慢收录
搜索引擎对每个 URL 的处理是分开的。它先要判断这个 URL 代表什么内容,再判断它和其他 URL 是不是同一个东西,最后才决定把哪一个放进索引。这几个判断都依赖网站自己给出的信号。
如果信号互相打架,抓取工具就需要额外的判断时间,或者干脆把几个 URL 都当成独立页面各抓一遍。结果是抓取配额被分散,真正想被收录的那个版本反而排队更久。
需要说明的是,这不会直接导致不收录,只是让流程变得更慢、更不确定。不要把它当成万能原因,先确认是不是真的存在冲突。
先对齐这三处信号
1. canonical 标签
canonical 表达的是“我认为这个才是主版本”。它应当是绝对 URL,指向的页面要能正常访问、返回 200、内容确实和其他版本一致。指向一个 404 或者重定向目标,等于没写。
2. 站内链接
内链是搜索蜘蛛发现 URL 的主要入口之一。如果列表页、面包屑、相关推荐里的链接写法各不相同,蜘蛛会顺着每一种写法各走一遍。
- 大小写、结尾斜杠、默认端口要统一
- 跟踪参数、排序参数尽量在内链里去掉
- 同一个目标页,别在不同入口混用 http 与 https
3. sitemap 与其他提交入口
sitemap 应该只放你希望被索引的那套 URL。如果里面同时躺着带参数、带大小写变体的地址,等于主动告诉搜索引擎“这些也算一份”。
一个可执行的自查顺序
- 挑一个内容页,从抓取日志里找出它实际被抓取过的所有 URL 写法。
- 对每一种写法,记录它当前的返回状态码和 canonical 目标。
- 检查 canonical 指向的那一个 URL,是否在所有入口里都是同一串字符。
- 检查内链和 sitemap 里有没有混入旧域名、旧路径或多余的参数。
- 把不一致的地方统一到同一个 URL 上,然后等下一轮抓取。
- 观察一段时间,看被抓取的 URL 种类是否减少、主版本是否被更频繁地访问。
几个容易被忽略的点
- 重定向也算一种信号。 如果 A 跳到 B,而 B 的 canonical 又指向 A,会形成来回指认,蜘蛛很难判断谁是主版本。
- canonical 不是命令。 它只是建议,最终选择权在搜索引擎。其他信号越一致,建议越容易被采纳。
- 别把全站 canonical 都指向首页。 这会让其他页面失去被索引的机会。
- 改动后不会立刻生效。 已索引的版本需要重新抓取和重新处理,通常要按周来观察。
什么时候不必强求统一
如果两个 URL 表达的是真正不同的内容——比如不同的筛选结果、不同的语言版本——那它们本来就该是各自的页面,用 canonical 强行合并反而会丢掉有效内容。统一口径针对的是“同一个东西被写成了好几个地址”,不是把所有相似页面都并成一个。
总结下来:收录进展慢,很多时候不是内容不行,而是你对搜索引擎说了几套话。先把 canonical、内链、sitemap 这三处的 URL 写法统一,再看抓取和索引状态的变化,判断会清楚很多。