站点运营

站点运营:robots.txt 與 meta 指令自查,別让一行配置挡住整站抓取

robots.txt 和頁面内的 meta 指令,看起来只是两行配置,却直接决定蜘蛛能不能進来、能不能索引。很多站点的抓取異常並非服務器故障,而是通配符寫错、路径前缀誤伤,或者 noindex 與屏蔽規則互相打架。本文梳理两套指令的邊界,给出一份可以逐條核對的检查清單。

站点运营

站点运营:robots.txt 與 meta 指令自查,別让一行配置挡住整站抓取

robots.txt 和頁面里的 meta 指令,平时很少被人翻看,但它們的權限相当大:一個字符寫错,可能让整站從抓取队列里消失,也可能让本来该下线的頁面長期留在索引里。抓取量突然下滑时,先別急着怀疑服務器,先把這两處配置核對一遍往往更有效率。

两套指令,管的事情並不一样

很多人把它們当成同一類開關,實际上作用阶段完全不同,混在一起想就容易出错。

robots.txt 管的是抓取行為

它放在域名根目錄,蜘蛛在發起請求之前先讀取,據此决定哪些路径不去訪問。注意它不控制索引,也不會把已经收錄的頁面從搜尋结果里刪除,只是让蜘蛛少走一趟。

meta 指令管的是抓取之後

頁面头部的 meta robots,以及 HTTP 响應头里的 X-Robots-Tag,處理的是内容拿到之後的事情:是否允许索引、是否跟随連結、是否展示摘要。它只有在蜘蛛真正讀到頁面时才生效。

几個容易踩到的细节

路径匹配是前缀,不是精确匹配

Disallow: /news 會同时挡住 /news、/news/2024 以及 /newsletter,最後這個通常是被無意牵连的。要拦一個目錄,建议寫成带结尾斜杠的形式。当同一條路径同时命中 Allow 和 Disallow 时,主流蜘蛛一般按最長匹配優先,長度相同时 Allow 優先,但不同引擎的细节存在差异,不要把規則设計成依赖這種邊界判断。

被屏蔽的頁面讀不到 noindex

一個反复出現的誤区:頁面里寫了 noindex,但同一路径又被 robots.txt 挡住。蜘蛛進不来,自然看不到 noindex,頁面可能仍以只有标题和連結的形式留在结果里。正确顺序是先放開抓取,等 noindex 生效、頁面登出索引之後,再考虑收紧規則。

  • 通配符寫得太宽,例如用問号通配挡住了一大批正常的分頁或静態參數地址,動手前最好先看日誌確認哪些地址真的没有價值。
  • 路径区分大小寫,/About 和 /about 可能是两個地址,規則要分別覆盖。
  • 單獨一個斜杠和空值的含义完全相反:允许全部與屏蔽全站只差一個字符。
  • 後台、測試、临时目錄没有清理,長期可訪問又不打算收錄,最终會被抓進索引。
  • 多层配置叠加:CDN、反向代理、源站各加了一层响應头,其中某一层寫了 noindex 而没人记得。
  • 用 meta 标簽處理非 HTML 文件:PDF、图片、脚本资源讀不到頁面头部,只能靠响應头控制。

一份可以逐條核對的清單

  1. 直接在浏览器訪問 /robots.txt,確認返回正常狀態碼、内容是纯文本,没有被错誤地套上 HTML 頁面。
  2. 检查 User-agent 分组是否覆盖了主要搜尋引擎蜘蛛,避免只寫了一组而漏掉其他。
  3. 逐條回看屏蔽路径,按前缀方式手工拼一遍,確認不會誤伤同級目錄或相似命名的栏目。
  4. 確認站点地图地址寫在文件内,並且指向可訪問的正式域名。
  5. 抽查高價值栏目頁,用抓取測試工具查看實际生效的抓取與索引狀態。
  6. 查看响應头,確認没有意外的 noindex 或 nofollow 混進来。
  7. 對近期下线的栏目,確認执行顺序是先放開抓取、再上 noindex,而不是反過来。
  8. 把 robots.txt 纳入版本管理,每次改動留记錄,出問题时能快速比對和回滚。

改完之後怎么驗證

別只看配置文件本身。改動後在日誌里观察一段時間,關注目标路径的抓取量是否回到预期,被屏蔽的路径是否真的不再出現。搜尋引擎提供的抓取測試工具能顯示某條地址實际生效的規則與索引狀態,比人肉推演可靠得多。另外要留意缓存:CDN 和反向代理可能存着舊的 robots.txt,改完後主動刷新一次,並從不同线路確認取到的内容一致。

robots.txt 是過滤器,不是安全措施。敏感路径要靠權限和鉴權拦住,而不是指望一行屏蔽規則。

寫在最後

這類配置平时不起眼,出問题时却往往是整站級別的。建议把 robots.txt、meta 指令模板、响應头設定放進同一份變更清單,改版或新開栏目时顺手核對一遍,比事後翻日誌省力得多。