robots.txt 是站点根目錄下一個纯文本文件,用来說明哪些路径允许抓、哪些不允许。文件本身很简單,但在蜘蛛池场景里,入口頁數量多、模板统一、常常批量生成,一條寫错的規則影响的往往不是一個頁面,而是整批頁面同时失去被抓取的机會。下面按放行什么、屏蔽什么、容易踩的坑来讲。
一、先分清:它管的是抓取,不是收錄
robots.txt 只能告诉蜘蛛這條路不要走,並不能决定 URL 會不會出現在搜尋结果里。一個常见誤解是:把入口頁 Disallow 掉,就等于這批頁面干净了。實际上只要 URL 通過外鏈、歷史记錄或主動提交被蜘蛛知晓,它仍可能被收錄,只是内容讀不到,展示出来的往往是空标题或舊摘要。所以動手屏蔽之前先想清楚目的:是不希望蜘蛛在這里浪費抓取配額,還是不希望頁面被看到。這两件事的解法並不一样。
二、入口頁通常需要放行的部分
- 入口頁自身路径:如果希望蜘蛛讀到入口頁内容並顺着連結繼續走,就不要對整個目錄做 Disallow。
- CSS、JS 等静態资源:资源被屏蔽後,蜘蛛拿到的渲染结果可能和用戶看到的不一致,判断頁面质量时容易出偏差。
- Sitemap 所在路径:文件本身不面向用戶,但保持可抓取會更省事。
三、這些路径通常值得屏蔽
- 後台、登入、測試目錄等不适合被外部訪問的路径。
- 站内搜尋结果頁,以及带大量參數的篩選頁,這類 URL 组合几乎可以無限生成。
- 統計脚本、跳轉中間頁等只服務于点击計數的路径。
- 同一内容的多套 URL 變体,可以先用 Disallow 兜住,長期還是建议用 301 或 canonical 處理。
四、几個高频坑
1. 通配符和结尾符号用错
Disallow 里的路径不带通配符时按前缀匹配,寫了 /tmp 會把 /tmpabc 一起拦掉。需要精确到目錄时补上结尾斜杠;需要匹配參數或後缀时用 * 和 $,但建议先小范围驗證,再全量生效。
2. 多域名、多子域各寫各的
robots.txt 按主机名生效,子域不會自動繼承主域的規則。入口頁分散在多個域名下时,要逐站確認文件存在,不要只在主站放一份。
3. 文件格式出問题
文件開头的 BOM 头、全角冒号、大小寫混用,都可能让整段規則被忽略。寫完直接拿浏览器打開看一眼,比事後排查要快得多。
4. 把它当成訪問控制手段
robots.txt 是约定,不是屏障。真正敏感的内容請用權限校驗,別指望一行 Disallow 挡住谁。
五、和 Sitemap 的配合
可以在文件末尾用 Sitemap 字段声明站点地图地址,方便蜘蛛顺带發現。但要注意,如果 robots.txt 本身返回 404、500 或者响應超时,部分蜘蛛可能暂时放缓對该站的抓取,所以這個文件的可用性也该纳入日常监控。反過来,Sitemap 提交是獨立通道,不要因為 robots.txt 寫错就把它一起停掉。
六、上线前的自查清單
- 直接訪問域名下的 robots.txt,確認文件能打開、内容無乱碼。
- 检查有没有誤寫 Disallow: / 這類全站封禁。
- 逐條核對通配符和结尾符号,確認没有誤伤入口頁目錄。
- 確認每個承载入口頁的域名都有一份獨立文件。
- 改動後隔一段時間看服務器日誌,確認蜘蛛對入口頁的請求量没有異常下滑。
把 robots.txt 当成入口頁体系的一部分来维護,而不是建站时随手放一個預設文件,能省掉不少頁面明明在、蜘蛛就是不来的排查時間。