做站点运营,robots.txt 和 noindex 通常不會天天動,但一旦寫错,影响范围往往不是單個頁面。它們一個管“能不能抓”,一個管“能不能索引”,很多誤伤整站的情况,都来自把這两件事混在一起,或者改完没有驗證。
先分清:robots.txt 管抓取,noindex 管索引
robots.txt 是给蜘蛛看的抓取規則文件,放在站点根目錄。它告诉蜘蛛哪些路径可以抓、哪些不要抓。但它不是收錄開關:如果某個頁面被外部連結指向,即使 robots.txt 禁止抓取,搜尋引擎仍可能僅凭連結信号把它放進索引,只是没有摘要或快照。
noindex 是頁面級的索引指令,通常寫在 meta robots 标簽或 HTTP 响應头 X-Robots-Tag 里。它表示“這個頁面可以抓,但不要放進搜尋结果”。两者目的不同,不能互相替代。
一個常见错誤:用 robots.txt 屏蔽某個栏目,以為這样頁面就不會出現在搜尋里。實际上蜘蛛看不到頁面上的 noindex,反而可能留下一個没有内容的索引條目。
robots.txt 自查清單
- 是否誤屏蔽整站:检查有没有出現 Disallow: / 這類規則。測試环境複製到线上、或者临时調试後忘记刪除,都可能導致整站不可抓。
- 是否屏蔽了渲染资源:CSS、JavaScript、图片如果被禁止抓取,蜘蛛可能無法正确理解頁面内容和移動端适配。除非有明确原因,一般不建议屏蔽這些目錄。
- 規則是否誤伤目錄:比如想屏蔽 /search/,却寫成了 /s,可能连带挡住其他以 s 開头的路径。規則越短,誤伤面越大。
- User-agent 分组是否正确:不同蜘蛛用不同分组,寫错位置會让規則不生效。如果只想给某類蜘蛛特殊規則,确保它寫在對應分组下,而不是全局分组里。
- Sitemap 地址是否有效:robots.txt 里声明的 sitemap 地址要能正常訪問,不要指向測試域名或已经改版的舊路径。
- 是否屏蔽了重要栏目:把要參與搜尋的栏目、文章目錄列出来,逐條對照 robots.txt,確認没有被意外挡住。
noindex 自查清單
- 模板是否全站誤加:检查公共模板、CMS 預設設定、安全插件,有没有在所有頁面輸出 noindex。一個模板變量寫错,整站頁面都可能被标记。
- meta 與响應头是否冲突:頁面里寫的是 index,服務器响應头却带 noindex;或者反過来。以更嚴格的一侧為准,所以两邊要一起看。
- 分頁、标簽、搜尋頁是否處理合理:這些頁面不是不能 noindex,但要先想清楚:它們是希望被索引,還是只服務于站内用戶。處理方式應和栏目規划一致。
- 是否和 robots.txt 叠加使用:如果 robots.txt 已经禁止抓取,頁面上的 noindex 蜘蛛就看不到。想让頁面登出索引,通常應先允许抓取,再让蜘蛛看到 noindex,等索引移除後再考虑是否屏蔽抓取。
- 移除 noindex 後是否驗證:去掉 noindex 不等于马上恢复。需要確認頁面可抓取、返回正常狀態碼,並给搜尋引擎重新發現和處理的周期。
一個實用的排查顺序
- 先列出清單:哪些頁面希望被搜尋看到,哪些不希望。没有清單,後面的检查很容易凭感觉。
- 用命令行或浏览器開發者工具查看頁面的 HTTP 响應头,確認 X-Robots-Tag 和狀態碼。
- 查看頁面源代碼里的 meta robots,和响應头做對照。
- 直接訪問 /robots.txt,通讀規則,重点看有没有全局屏蔽和路径誤伤。
- 结合服務器日誌,看蜘蛛實际抓取了哪些路径、返回什么狀態。日誌比报表更接近真實情况。
- 改動後,用搜尋引擎提供的 robots 測試工具或抓取工具驗證,再观察一段時間。不要一天内反复改規則。
把改動当成一次小發布
robots.txt 和 noindex 的改動,影响面往往比一篇文章大。建议在測試环境先驗證,保留改動记錄,知道谁在什么時間改了什么。线上修改前先备份原文件,改完後用無痕窗口和抓取工具各看一遍。
站点运营里的很多問题,不是缺技巧,而是缺一次检查。把 robots.txt 和 noindex 放進定期自查表,花十分钟確認,比事後补救要省事得多。