不少站点在做 URL 發現时,會把入口頁放在蜘蛛池里,同时又担心這些入口頁本身被搜尋蜘蛛抓取、被判定為低质頁面。于是一個很常见的做法出現了:在 robots.txt 里寫一條 Disallow,把入口頁目錄整段屏蔽掉。問题是,這样做之後,入口頁里那些指向目标 URL 的連結,搜尋蜘蛛還能不能看到?目标 URL 還能不能被發現?
先说结论:屏蔽入口頁,等于切断這條發現路径
robots.txt 的 Disallow 作用對象是“抓取”,不是“發現”。当一條 URL 被 Disallow 覆盖时,搜尋蜘蛛通常不會再去請求這個頁面,也就讀不到頁面里的 HTML。既然讀不到 HTML,頁面里的 a 标簽、連結文本、URL 參數,自然都無從获取。
換句话说,蜘蛛池入口頁的核心價值就是“让蜘蛛讀到連結”,而 robots.txt 屏蔽恰好把這件事挡在门外。入口頁被屏蔽後,目标 URL 不會因為“入口頁存在”而被發現,這條路径基本失效。
需要注意的是,Disallow 並不等于“這個 URL 一定不會出現在搜尋结果里”。如果別處有連結指向它,它仍可能被索引,只是缺少描述信息。想控制索引,應该用頁面級的 noindex,但 noindex 生效的前提是蜘蛛能抓到頁面——這两件事经常被混為一谈。
几種常见的配置情况
1. 只屏蔽入口頁,目标 URL 允许抓取
- 蜘蛛不抓入口頁,讀不到里面的連結,目标 URL 無法通過该入口被發現;
- 目标 URL 本身没有被屏蔽,如果通過 sitemap、站内連結、外部連結等路径被發現,仍然可以正常被抓取;
- 结论:屏蔽的是“發現通道”,不是“目标頁面”。
2. 入口頁和目标 URL 一起被屏蔽
這種情况下,抓取和發現两條路都被堵住。除非站点在別處還有可抓取的入口,否則目标 URL 基本不會被處理。
3. 用通配符或目錄規則誤伤
像 Disallow: /entry/ 這類目錄級規則,很容易把同目錄下的其他有用路径一起屏蔽。上线前建议用搜尋引擎官方的 robots.txt 測試工具逐條驗證,確認命中范围,而不是凭直觉判断。
如果确實不想让入口頁被抓,怎么办
先想清楚目的:
- 目的是“不想让入口頁出現在搜尋结果里”,優先考虑 noindex,而不是 Disallow;
- 目的是“不想让蜘蛛把抓取预算花在入口頁上”,這部分可以接受屏蔽,但要另建發現路径;
- 目的是“保護入口頁不被竞争對手看到”,這個思路本身不成立,因為 robots.txt 是公開文件,屏蔽反而等于公開告知目錄位置。
替代的 URL 發現方式
- sitemap:把目标 URL 整理成 sitemap 提交,是相對稳定的發現方式,不依赖入口頁是否被抓;
- 站内正常連結:在可抓取的頁面里用真實 a 标簽指向目标 URL,让連結结构本身承载發現功能;
- 搜尋平台的 URL 提交接口:适合新頁面或更新频繁的頁面,作為补充手段;
- 外部連結:在其他可抓取的頁面上留連結,同样可能被蜘蛛顺着發現。
實操建议
如果入口頁已经用 robots.txt 屏蔽,可以先做個简單驗證:用搜尋引擎的抓取測試工具請求一個入口頁 URL,看返回的是“被 robots.txt 阻止”還是正常内容。如果顯示被阻止,那這條路径上的連結确實不會被讀取。
之後按這個顺序調整:確認目标 URL 本身没有被 robots.txt 覆盖;把目标 URL 放進 sitemap;在可抓取的頁面里补上稳定的站内連結;再观察服務器日誌里目标 URL 的抓取记錄是否出現。抓取是否真的發生,最终以日誌為准,而不是以“我提交了”為准。