Shopify 的 sitemap.xml 由平台自动生成、自动更新,正常状态下不需要人工维护。它出问题时,文件本身一般没坏,对不上的通常是三处:子表的当前地址、robots 的放行状态、Search Console 里的索引报告。分开看这三处,比反复重新提交 sitemap 有效得多。
根 sitemap 是索引,子表按内容类型拆开
所有 Shopify 店铺都会自动生成一份 sitemap.xml,放在店铺域名的根目录下,内容包含指向产品、产品主图、页面、集合和博客文章的链接;这份文件会指向产品、集合、博客、网页各自的独立 sitemap(Shopify 关于 sitemap 的说明)。所以你看到的形态是两层:根文件负责索引,子表按类型分列,产品这类数量大的还会继续分段。子表的具体命名和分段形式,以你打开自己的 sitemap.xml 看到的内容为准,不要按别的教程里的固定文件名去猜。还有一件事要避免:手工上传一份自建的 sitemap 文件。平台上已经有自动生成的版本,两份并存只会让报告里出现互相矛盾的条目。要调整收录范围,改的是页面和 robots 规则,不是另造一份文件。

条路由平台维护,不由你手写(光算 · 示意图)
更新是自动的:新增网页、产品、集合、图片或博客文章之后,sitemap 会自动更新(同一份文档)。这意味着你不需要为了「提交新内容」去动这份文件,真正要确认的是更新之后有没有被正常读取。
用了国际域名的店铺要单独注意:这种情况下每个域名都会生成自己的 sitemap,所有域名都能被搜索引擎发现,除非它们跳转到主域名(同一份文档)。多语言版本不用另外处理,语言会自动加进各个域名的 sitemap。
里面会出现哪些地址,哪些不会
文档给出的范围是产品、产品主图、页面、集合和博客文章。除此之外的地址通常不在里面:后台和结账路径由 robots 规则挡着,站内搜索结果页不是稳定的内容地址,也不会有人希望它出现。被明确设置为不索引的页面是否还留在 sitemap 里,取决于平台对这个设置怎么处理,需要你打开文件实际确认,不要假设它会自动消失。
还要区分平台生成的 sitemap 和其他来源的 sitemap 文件。如果根目录下多出别的 sitemap 文件,或者 Search Console 里显示提交了多个地址,先弄清每个是谁生成的、覆盖什么内容,再判断哪一个才是你现在依赖的。两个来源互相打架的时候,先删掉不再维护的那个,别让报告里一直挂着看不懂的条目。
提交之前先验证域名,每个域名各提交一次
- 在 Search Console 添加资源并验证所有权:选 URL 前缀,填带
https://的域名;用 HTML 标签方式验证时,把平台给出的 meta 标签整段粘贴到 theme.liquid 的 head 标签下面,再回来点验证。 - 确认店铺没有处于密码保护状态,否则爬虫访问不到内容。
- 进入 Search Console 的索引相关菜单里的 Sitemaps,输入 sitemap.xml 后提交,域名前缀会自动补上。
- 用了国际域名的,每个域名各提交一次。
这几步来自 Shopify 的文档说明。提交只是入口,之后要看的是报告:Google 抓取 sitemap 之后不会同时索引整个网站,而是逐页处理,用页面上的元数据决定搜索结果里显示什么(同一份文档)。所以「已提交」这个状态本身没有信息量,真正要看的是每个地址目前处于已收录、已抓取未收录还是被排除。报告在不同版本的 Search Console 里名称可能不同,以你自己账号里看到的为准。数据对不上时,比起盯总数,抽样核对更快:从子表里挑几个地址,用 Search Console 的 URL 检查工具看 Google 实际看到的版本和你自己打开看到的是否一致。问题通常集中在某一类页面,而不是全站都错。

先排除最容易被忽略的原因(光算 · 示意图)
索引要花多久,平台和 Google 都不给承诺,Shopify 文档的措辞是这个过程需要时间且不作时间保证(同一份文档)。想先建立合理预期,可以看已经写过的 新站索引时间,那里按阶段说了这段等待期里该做什么。
产品子表为什么会有好几个
产品数量大的店铺,产品子表会拆成若干份,每份按区间覆盖一批产品。这样做的目的是单份文件不至于过大,抓取时也能分开读取。排查时只看了第一份就下结论,会漏掉后面的产品。做法是从根文件出发,把产品类型下面列出的地址全部打开,确认每一份都能访问、都有条目。
五类「对不上」,按这个顺序查
先看根文件和子表的关系,再往外查。顺序错了会在错误的地方花掉一整天。
根文件里列出的子表打开是 404
子表会随数据变动重新生成,地址里可能带区间或数量参数,之前记录下来的子表地址后来失效属于正常现象。先重新打开根文件、按当前列出的地址逐个访问,能打开就不用管。如果根文件当前列出的地址依然打不开,才需要怀疑主题或应用改写了输出。判断要用当前的实际结果,不要拿几个月前存下来的地址做依据。
子表能打开但内容为空或条目异常少
sitemap 收的是平台认为可以在线访问的地址,条目数不等于后台列表的数量。明显偏少时,比较常见的几类原因是商品还是草稿状态、没有发布到在线商店这个销售渠道、或者不属于当前某个市场。这几类商品的实际收录表现,要以你打开子表看到的结果和商品当前的发布状态对照确认,不要凭经验下结论。
条目数和后台数量对不上
先确认双方在数同一种东西。后台商品列表数的是商品,sitemap 里出现的可能包括产品地址、主图、集合页、博客文章和网页,两边口径本来就不同。要用同一个口径比:只数产品地址,再和后台已发布商品数对照,仍然差很多才需要继续查。
被 robots 挡住了
robots.txt 管的是抓取通道,规则里挡掉了要收录的目录,sitemap 里列着的地址同样抓不到。先打开 域名/robots.txt 看有没有过宽的规则,改动方法和验证步骤见 robots.txt 能改什么、怎么验证。
更新没有及时反映
sitemap 自动更新,但它到你看到的报告之间还有抓取和重新处理的过程,这段时间不由你控制。看到旧数据先等一轮,连续几天重复提交同一个地址不会加快处理。
报告里的地址比 sitemap 多,先别慌
报告里出现的地址数量经常大于 sitemap 的条目数,因为发现地址的方式不止 sitemap:站内链接、外部链接、历史抓取记录都会成为发现路径。反过来,报告里的数量少于 sitemap 才是需要留意的方向,通常意味着部分地址还没被抓取,或者抓到了但不满足收录条件。判断时看差值集中在哪一类页面,别只盯总数。
多域名与多语言时的三条核对
- 每个域名各有一份 sitemap,要各自提交;只在主域名上销售时,其余域名应当指向主域名,而不是各留一份可访问的内容。
- 语言版本会自动加进各个域名的 sitemap,不需要你手工维护,但要确认各语言地址在页面上确实互相指向,这部分见 Markets 与 hreflang 的对齐。
- Search Console 里提交了多个域名的 sitemap 时,看报告先确认当前选的是哪个资源,否则会把两个域名的数据混在一起判断。
查 sitemap 用什么工具就够
不需要额外软件。浏览器直接打开 sitemap.xml 看根文件列了哪些子表,再逐个打开;商品的发布状态在后台商品列表里核对;索引情况在 Search Console 的报告里看。第三方爬虫工具能帮助了解整体抓取情况,但它抓到的结果和搜索引擎实际处理的并不完全一致,它标出的「未收录」也不等于最终结论,判断时以官方报告为准。报告里能看到抓取与收录状态,但不会告诉你为什么没收录,原因通常要回到页面本身去找。
sitemap 是弱信号,替代不了内链和内容
Google 在决定哪个地址作为规范版本时,会参考 URL 是否出现在 sitemap 里,同时参考协议、跳转和页面上的 canonical 声明,最后仍由它自己选,声明只是提示而不是规则(URL 规范化说明)。sitemap 只是这串因素里的一个,指望它单独把页面推进搜索结果不现实。
决定页面能不能被选中的,还是内容本身以及站内能不能走到它。集合页的链接安排见 集合页的标题、正文与内链安排,整站层面的可达性与规范标注核对,见 从抓取到索引的技术自查清单。
什么时候不该继续折腾 sitemap
如果根文件能打开、子表正常、robots 放行,报告里的问题集中在「已抓取但未收录」,那问题不在 sitemap,而在页面本身:内容与其他页面过于相似、缺少内链入口、或者页面价值不足。继续重新提交不会改变结果。
重新提交有价值的时机只有几类:换域名、调整过 URL 结构、大批量上架新品。日常小改动不用重复提交,自动更新会覆盖到。每改一次就提交一次,除了让自己感觉在做事情,没有别的效果。
还有一个容易走偏的地方:把 sitemap 的条目数当成收录目标去追。条目数只是文件里地址的统计,和排名、流量没有对应关系,也不适合当考核指标。
边界收一下:sitemap 不保证收录,也控制不了展示,抓取与索引的时间由搜索引擎决定,平台文档明确说不作保证。如果你的问题已经越过技术层、变成整站范围的抓取与收录推进,光算的谷歌收录服务处理的是这一层,它不会改变你主题里 sitemap 的自动生成机制,也不要指望提交一次就解决内容质量问题。