站点地图(sitemap)常被当成“提交了就等着收錄”的工具,實际上它只解决一件事:把 URL 主動告诉搜尋引擎,减少纯靠連結爬行带来的遗漏。至于是否抓取、是否收錄,仍由搜尋引擎根據頁面质量和站点整体情况判断。所以更值得花時間的,是放對文件、寫對内容、保持更新。
文件放在哪,怎么被找到
最省事的做法是把 sitemap.xml 放在站点根目錄,然後在 robots.txt 里用 Sitemap 行声明它的完整地址。這样即使没人手動提交,爬虫也能顺着 robots.txt 找到它。
如果站点有多個子域或目錄,可以分別生成,再匯總到一個索引文件里。需要注意:一份 sitemap 里通常只能放同一站点(同协议、同主机)下的 URL,把別的域名塞進来一般會被忽略。子域、獨立域名各自提交,讀起来也更清楚。
單文件的上限與拆分方式
單個 sitemap 文件有两條硬上限:URL 數量(通常 50,000 條)和文件体积(未压缩约 50MB)。任意一條超了就要拆。
拆分有两種思路:按内容類型分(文章、商品、栏目),或按時間分(按月归档)。前者便于單獨观察某一類頁面的抓取表現,後者便于控制單文件大小。拆完之後用 sitemap index 文件把子文件列出来,只提交這一個索引地址即可。
子文件建议放在同一目錄下,路径別寫错——一個 404 的子文件會让那一整块 URL 白提交。文件較大时可以 gzip 压缩,但要确保声明的地址指向压缩後的文件,且文件名後缀與内容一致。
哪些 URL 该放進去
- 返回 200、允许被抓取、且希望出現在索引里的規范 URL。
- 新上线、站内連結較少、靠爬行不容易被發現的頁面。
- 正文更新過、希望尽快被重新抓取的重要頁面。
反過来,下面這些不建议放:
- 設定了 noindex 的頁面,两者诉求互相矛盾。
- 會 301、302 跳轉的舊地址,直接寫跳轉後的目标更有效。
- 404、410 或根本不存在的地址。
- 带大量參數的篩選、排序 URL,除非這些頁面确實需要被索引。
- 分頁、标簽、站内搜尋结果頁等低價值或重复度高的地址,是否放入要看站点策略。
容易踩的几個誤解
提交等于收錄
不是。sitemap 只影响“發現”,頁面能否進索引取决于内容质量、重复程度、站点整体可信度等。提交後長期不收錄,應该回头查頁面本身,而不是反复提交。
URL 塞得越多越好
把無價值頁面一起塞進去,既稀释了有效信号,也占用抓取资源。宁少而准。
lastmod 随便填
時間戳與頁面實际修改情况不符时,會被判断為不可靠,之後即使真的更新也难获得優先抓取。模板批量改動導致全站時間一起變化的情况尤其要注意。
索引文件里混入错誤地址
索引文件本身也是 XML,里面的子文件地址必须可訪問、可解析。一個子文件返回错誤,可能连累對整份提交有效性的判断。
维護节奏與自查顺序
- 確認 robots.txt 中声明的地址能正常打開,返回 200 且内容是 XML。
- 检查是否有 noindex、重定向、404 地址混入,先清理掉。
- 核對 URL 數量與文件体积是否接近上限,接近就拆分。
- 子文件地址逐一驗證,再用索引文件统一提交。
- 新增頁面按天或按小时更新,下线頁面及时移除,別只增不减。
- 隔一段時間對比“已提交”與“已收錄”的數量差,差异大的那部分才是要重点分析的對象。
sitemap 能保證的是“你告诉過它”,不是“它會收錄”。把它当成一份干净、及时、可维護的 URL 清單,比当成收錄開關更接近它的實际作用。