很多蜘蛛池的問题,不是出在入口頁结构和連結上,而是出在更靠前的一步:蜘蛛還没開始抓,就被 robots 規則挡在门外。robots.txt 和頁面里的 meta robots 是蜘蛛進入站点的第一道门,設定错了,後面所有優化都等于零。
robots.txt 是“抓取许可”,不是“收錄控制”
robots.txt 告诉蜘蛛哪些路径可以抓、哪些不能抓。它只影响抓取,不直接决定收錄。蜘蛛池入口頁通常需要被蜘蛛發現和訪問,所以入口頁本身、以及通往目标頁的連結路径,一般要放行。
有些运营者把 robots.txt 当收錄開關用,想屏蔽某個頁面就寫 Disallow,结果蜘蛛根本進不来,頁面自然不會出現在後續的抓取里。要控制收錄,應该用 meta robots 的 noindex,或者 canonical 指向別的頁面。
入口頁常见该放行的東西
- 入口頁本身:如果入口頁就是给蜘蛛看的第一层,不要 Disallow 掉它的路径。
- 目标頁路径:蜘蛛需要通過入口頁上的連結走到目标頁,目标頁所在目錄若被整体屏蔽,入口頁再多也到不了终点。
- CSS、JS 等静態资源:搜尋引擎需要渲染頁面,屏蔽 CSS/JS 可能導致蜘蛛看到的頁面和用戶看到的不一样,影响判断。
- sitemap 文件:如果用了 sitemap,不要把它屏蔽掉,否則蜘蛛讀取不到。
哪些情况可以拦
- 後台、登入、搜尋结果參數頁等不需要蜘蛛抓取的路径。
- 大量重复的篩選參數,可以用 robots.txt 屏蔽參數,减少抓取浪費。但要注意別把入口頁需要的參數一並屏蔽。
- 明顯無意义的临时目錄、測試目錄。
三種常见誤伤
1. 全站 Disallow
改 robots.txt 时手誤寫成 Disallow: /,蜘蛛會直接放弃整站。更麻烦的是,搜尋引擎已经抓過的舊頁面可能還在,新頁面却進不来,日誌里蜘蛛来訪會明顯减少。
2. 屏蔽了静態资源
有些站点為了省流量,把 /css/、/js/ 目錄整段屏蔽。蜘蛛渲染頁面时样式和脚本缺失,可能把入口頁当成空白頁或结构混乱的頁面,降低抓取意愿。
3. meta robots 寫反
入口頁模板里若带着 noindex, nofollow,蜘蛛虽然能抓,但不會顺着連結繼續走,也不會把頁面放進索引。蜘蛛池入口頁尤其要检查模板預設值,別让“不放連結”變成“不跟連結”。
meta robots 和 robots.txt 的分工
简單记:robots.txt 管“能不能抓”,meta robots 管“抓了之後怎么處理”。如果希望頁面被抓取、但不被收錄,用 meta noindex;如果希望蜘蛛不要沿着頁面上的連結繼續走,用 nofollow。但蜘蛛池入口頁的核心任務就是让蜘蛛顺着連結走到目标頁,所以 nofollow 要慎用。
一個可用的判断顺序:先確認蜘蛛能抓到入口頁,再確認蜘蛛能顺着連結走到目标頁,最後才考虑哪些頁面需要 noindex。顺序反了,容易在第一步就把路堵死。
怎么驗證没有誤伤
- 直接訪問 /robots.txt,確認返回 200,内容不是全站 Disallow。
- 用搜尋引擎提供的 robots 測試工具,輸入入口頁 URL,看是否被允许抓取。
- 查看頁面源代碼,確認 meta robots 不是 noindex, nofollow,尤其是模板生成的入口頁。
- 观察服務器日誌中蜘蛛對入口頁的訪問量。如果長期為零,先查 robots,再查防火墙和 CDN。
给蜘蛛池运营者的建议
robots 規則越简單越好。入口頁尽量放行,目标頁路径不要整体屏蔽,静態资源放行。需要控制收錄的頁面,用 meta robots 單獨處理,不要用 robots.txt 一刀切。每次改完 robots.txt,先在測試工具里驗證,再看日誌變化。蜘蛛池的很多“没反應”,根源不在池子本身,而在第一道门就没打開。