很多人把入口頁做完、外鏈挂上,就觉得蜘蛛池這部分工作已经收尾,剩下交给蜘蛛就好。實际上蜘蛛到達入口頁之後,最先面對的是两個基础文件:robots.txt 和 sitemap。它們不决定内容质量,却會直接影响蜘蛛在入口頁域名上的行動路线——是先绕路、還是被挡在门外、還是拿着一份清單按部就班地抓。
robots.txt 在入口頁域名上的两種寫法
入口頁域名通常没有真實业務目錄,robots.txt 的结构也比正常站点简單,常见做法有两類:
- 全站放行,只挡無關路径。User-agent 用通配,Allow 指向根目錄,再單獨 Disallow 掉後台、統計、临时目錄、上传目錄。适合入口頁數量不多、结构規整的情况。
- 放行入口頁,屏蔽參數组合。如果入口頁带查询參數,可以用 Disallow 挡掉明顯的參數拼接形式,避免蜘蛛在參數空間里反复试探。要注意別把入口頁本身也拦進去。
最容易犯的错:把入口頁挡在门外
有人為了降低被识別的概率,把入口頁目錄整体 Disallow,然後指望蜘蛛從外鏈進来抓。结果往往是:蜘蛛确實来了,但抓取被 robots.txt 拒绝,服務器日誌里全是"被 robots 屏蔽"的记錄。這種情况下入口頁等于没進池,前面做的連結也白搭。
不要在 robots.txt 里寫 Crawl-delay
Crawl-delay 在不同引擎上的兼容性差异很大,有的支持,有的直接忽略。给入口頁設定過大的延迟,會把本该分散的抓取强行拉長,單位時間内的 URL 發現量反而下降。控制抓取节奏更适合從入口頁數量、連結位置和更新节奏上入手,而不是依赖一個延迟參數。
sitemap:给入口頁一份可選清單
sitemap 的作用是告诉蜘蛛"有哪些 URL 可以看",它不保證被收錄,也不提升權重,但能减少蜘蛛靠連結猜测的成本。對入口頁来说有几個實际考虑:
- 新入口頁優先。刚上线的入口頁外鏈還没被爬到,sitemap 是最直接的發現路径之一。
- 分片管理。入口頁數量上千之後,單個文件控制在 5 萬條以内,用 sitemap index 匯總,方便按批次整份替換。
- 保持准确。文件里只放返回 200、可正常訪問的地址。混入重定向、404、被 robots 屏蔽的 URL,會让蜘蛛對整份文件的信任度下降。
- lastmod 別乱寫。所有條目共用同一個更新時間,蜘蛛很快會忽略這個字段。只在實际改動时更新對應條目。
常见誤区
- 以為提交了 sitemap 就會被抓。它只是建议,不是指令,蜘蛛仍然按自己的判断决定抓不抓、抓多少。
- 入口頁和主站共用一個 sitemap。主站文件里通常都是业務頁面,混入入口頁既干扰主站資料,也让入口頁的更新狀態难以追踪,分開更清楚。
- robots.txt 里声明了 sitemap 地址,文件本身却 404。批量部署时這種低級错誤很常见,脚本跑完應该抽查一遍。
- 把 sitemap 当成隐藏 URL 的手段。它是公開文件,任何人訪問根目錄下的 sitemap 都能看到全部地址。
實操上的搭配建议
比較省心的组合是:入口頁域名放一份全站放行的 robots.txt,只屏蔽明顯的後台和临时路径,並在其中声明 sitemap 地址;入口頁按批次寫進分片的 sitemap,新批次上线时同步更新文件;同时保留站内連結作為第二條發現路径。两條路径並行,比只依赖其中一條更稳,也更容易從日誌里對比出問题出在哪一环。
提示:sitemap 和 robots.txt 都属于基础设施,做對不會带来額外收益,做错却會让前面的入口頁工作白費。上线前花几分钟抽查一遍,比事後翻日誌排查要省事得多。
最後提醒一句,這两個文件解决的是"蜘蛛能不能顺利看到 URL",不解决"看到之後愿不愿意繼續抓"。入口頁能否被正常發現,只是整個流程中的一环,別把它当成全部。