sitemap 解决的是“發現”,不是“收錄”
不少人把 sitemap 当成提交入口:文件一挂,就等着頁面進索引。實际上它只做一件事——把 URL 明确地告诉蜘蛛。發現之後,抓不抓、收不收,仍取决于另外几件事:頁面能不能正常訪問、内容是否有獨立價值、和站内其他頁面是否高度重复、有没有被 noindex 挡住、站点的整体抓取是否顺畅。sitemap 是把门推開,不是把人拉進来。
哪些 URL 适合放進去
- 希望被索引的正文頁、詳情頁、栏目頁,且返回 200、内容可正常渲染
- 靠内鏈不容易走到、但确有價值的頁面,比如层級較深的詳情頁和早期文章
- 刚上线、需要尽快被發現的頁面
- 規范版本 URL,與你選定的 canonical 保持一致
一個简單的判断标准:這個地址,你是否愿意让它出現在搜尋结果里。
哪些 URL 不该放
- 被 noindex 的頁面:两個信号互相打架,只會浪費抓取
- 301、302 跳轉的地址,直接寫跳轉後的目标頁
- 404、410,以及已经下线的短期活動頁
- 排序、篩選、會话、追踪參數拼出来的地址
- 需要登入或填表之後才能看到内容的頁面
- 站内搜尋结果頁、几乎没有正文的薄标簽頁和空白頁
數量、分片和格式上的常規做法
- 一個文件別塞太多。URL 數到達几萬條量級时,就该考虑拆分,降低單次讀取失敗的影响面
- 用 sitemap 索引文件把多個子 sitemap 串起来,按栏目或内容類型划分,出問题时容易定位是哪一块
- lastmod 寫真實的最後修改時間。如果每次生成都刷成目前時間,這個字段很快就没有參考價值
- 文件可以压缩,但里面的地址要是完整绝對地址,带上协议和主机名
- 在 robots.txt 里声明 sitemap 地址,方便蜘蛛找到入口
- 站点規模不大时,一個文件加一行声明就够了,不必為了顯得专业硬拆成十几份
怎么判断 sitemap 有没有起作用
- 在服務器日誌里找 sitemap 文件的訪問记錄,看蜘蛛是否定期来讀,以及讀的是哪個子文件
- 观察新 URL 在 sitemap 里出現後,几天内是否被訪問過,而不是長期没有動静
- 如果 sitemap 被频繁讀取,但里面的地址迟迟不被抓取,問题多半出在頁面本身或站点整体抓取情况上
- 如果 sitemap 從不被讀,先检查 robots.txt 的声明、文件能否正常訪問、返回狀態是否正确
它和内鏈的關系
sitemap 是辅助通道,主力仍然是站内連結。内鏈结构清晰、层級不深的时候,頁面的發現节奏通常更稳,也更少依赖一份文件是否被及时讀取。两者配合使用,比只靠其中一項更可靠。
把 sitemap 当成一份“愿意被看到的 URL 清單”来维護:定期清理失效、跳轉和重复項,比一次性生成几萬條然後長期不管,效果要好得多。