蜘蛛池知识

蜘蛛池入口頁的 robots.txt:哪些该放開,哪些该挡住

蜘蛛池入口頁的 robots.txt 常被忽略,却直接影响蜘蛛能否走進入口頁、能走到哪一层。本文梳理 Disallow 與 noindex 的职责区別、列表與分頁路径的放開原則、需要挡住的參數與後台目錄,並给出一份上线前後可對照的检查清單。

蜘蛛池知识

蜘蛛池入口頁的 robots.txt:哪些该放開,哪些该挡住

蜘蛛池的入口頁通常不是手工维護的几頁静態文档,而是按模板批量生成、按节奏更新的頁面集合。运营者往往把精力放在跳轉鏈、内鏈拓扑和抓取日誌上,却容易忽略一個更前置的文件:robots.txt。它不决定頁面能不能被收錄,但决定蜘蛛能不能走進去、走到哪里為止。規則寫得含糊,抓取预算就會消耗在没意义的路径上。

先分清职责:管抓取,不管收錄

robots.txt 里的 Disallow 是抓取层面的约定,它只影响蜘蛛是否會請求某條 URL,不影响已经抓到的頁面是否進入索引。想让某個頁面彻底不出現在搜尋结果里,通常要靠 noindex 之類的索引指令。把這两件事混在一起,就會出現一種典型的自相矛盾:頁面被 Disallow 挡住了,同时又指望它上面寫的 noindex 生效——蜘蛛進不去,也就看不到那條指令。

入口頁常见的三類寫法問题

全站一刀切 Disallow

測試环境遗留下来的全站屏蔽規則被带到了正式入口站,是最常见也最难察觉的一類。表現是抓取日誌里几乎只有對首頁和 robots.txt 的請求,其余路径一片安静。

把带參數的列表頁整段封掉

入口頁往往靠參數做分頁或篩選,例如 ?page= 或 ?cat= 。如果為了省抓取预算把整段參數路径封死,蜘蛛也進不来,等于把入口頁之間的通路砍断了。更稳妥的做法是只封掉無限组合的篩選參數,保留分頁這類有明确顺序的路径。

多份規則互相打架

主站、子域、CDN 回源各留下一份 robots.txt,或者改版後新舊規則並存,蜘蛛按哪個执行取决于它請求到的域名。上线前應该確認唯一来源,避免同一批入口頁在不同域名下得到相反的结论。

哪些路径值得放開

  • 入口頁的列表與分頁路径,保證蜘蛛能從第一頁顺到後續頁;
  • 指向目标頁的中間跳轉頁,若跳轉對蜘蛛可见;
  • 必要的静態资源目錄,尤其是頁面渲染依赖的脚本與样式;
  • sitemap 文件本身及其所在目錄。

哪些路径建议挡住

  • 後台、登入、接口調试等與抓取無關的目錄;
  • 站内搜尋结果頁與搜尋參數入口,這類頁面组合近乎無限;
  • 同一内容的重复视图,例如排序、時間戳參數生成的副本;
  • 明顯是測試或占位的目錄,避免被抓到後拉低整站印象。

和其他指令的分工

大致可以這样理解:robots.txt 决定蜘蛛要不要来,meta robots 和 X-Robots-Tag 决定来了之後怎么處理。挡抓取用前者,挡索引用後者。两者同时用在同一頁面上,通常會得到一個不被抓、也没机會被索引的结果,這在资源頁或中轉頁上有时是想要的,但要用得明白。

上线前後的检查清單

  1. 以蜘蛛的身份訪問一下 robots.txt,確認返回 200 且内容不是缓存里的舊版本;
  2. 检查規則里是否出現了不该有的全站屏蔽;
  3. 確認入口頁列表、分頁、跳轉頁都不在 Disallow 范围内;
  4. 把 sitemap 地址寫進 robots.txt,並確認该地址可訪問;
  5. 上线後隔几天看一次抓取日誌,核對被請求的路径和規則预期是否一致。

观察與調整

規則不是一次寫完就固定不動。随着入口頁结构變化,原本安全的屏蔽可能挡住新路径。判断依據仍然是日誌:如果某類入口頁長期没有抓取记錄,先怀疑規則而不是蜘蛛。調整时一次只改一處,保留修改前後的日誌對照,否則很难分清是規則起作用還是更新节奏變了。

robots.txt 是入口頁的门禁,不是效果開關。把它寫清楚,能让抓取走在该走的路上;至于頁面最终表現如何,還要看内容、结构與更新节奏。