做收錄排查时,有一類問题很容易被忽略:頁面本身没有明顯問题,抓取和内容也正常,但它從一開始就被某條指令挡住了。這时候再怎么提交 URL、加内鏈,效果都有限。先把拦截類指令查清楚,再谈收錄,顺序會更顺。
三個地方都能寫拦截指令
和收錄相關的拦截指令,常见的有三處,作用范围從整站到單個资源各不相同。
robots.txt:管的是抓取
放在域名根目錄下的 robots.txt,通過 User-agent 和 Disallow 控制爬虫能不能抓某個目錄或文件。它影响的是抓取這一环。需要注意的是,被 Disallow 的 URL 通常不會被抓取,但搜尋引擎仍可能因為外部連結而收錄一個只顯示标题和摘要的版本。所以“robots 拦了就一定不會收錄”並不准确。
meta robots:管的是目前頁面
寫在 HTML 的 head 里,常见寫法是 noindex、nofollow、noarchive 等。noindex 影响的是是否進入索引。如果頁面同时被 robots.txt 拦住,爬虫可能看不到這個标簽,反而造成判断偏差。
X-Robots-Tag:寫在 HTTP 响應头里
通過响應头下發指令,對非 HTML 资源也能生效,比如 PDF、图片。它和 meta robots 的作用類似,但不需要改動頁面正文,适合批量處理。
優先級與常见冲突
三條指令同时存在时,可以按下面的思路理解:
- robots.txt 决定爬虫是否能抓到頁面;抓不到,頁面里的 meta 标簽就無從讀取。
- meta robots 和 X-Robots-Tag 都表達索引层面的意愿,出現冲突时,通常以更嚴格的那條為准。
- 同一個頁面在多個 URL 下返回不同指令,容易出現同一份内容一個放行一個拦截的情况。
很多怎么也收不進去的頁面,問题不在頁面质量,而是在某次改版或批量配置时被顺手加上了 noindex,之後没有清理。
按從外到内的顺序自查
- 先看 robots.txt 是否有针對目前爬虫的 Disallow,注意路径的匹配方式和大小寫。
- 抓取时看响應头里有没有 X-Robots-Tag,尤其是 PDF、图片、接口返回的頁面。
- 再查看 HTML 源碼里的 meta robots,確認值是 noindex 還是 index。
- 如果頁面属于多語言或多地区站点,检查各版本是否被單獨設定了拦截指令。
- 確認所有指令都放行後,再看服務器日誌里爬虫是否真的来過、返回的狀態碼是什么。
解除拦截之後要注意什么
把 noindex 移除或修正 robots.txt 之後,抓取和收錄不會立刻同步。原来的拦截记錄需要時間刷新,頁面也需要重新被抓一次。可以做的有:更新 sitemap 里的最後修改時間,從有抓取频率的頁面加内鏈指向它,並在需要时手動提交 URL。
這里要有個预期:解除拦截只是把通道打開,頁面能不能進入索引,還要看内容质量、重复程度和站点整体情况。把拦截排查当作第一步,而不是收錄的保證。