蜘蛛池知识

蜘蛛池入口頁的 robots 設定:哪些寫法會把已经铺好的路堵死

robots.txt、meta robots 和 X-Robots-Tag 三個控制点,在蜘蛛池里各自管什么、容易在哪里出错。文章梳理了 noindex、nofollow、canonical 用在入口頁上的實际影响,列了常见誤用清單,並给出一個從上到下的检查顺序,帮助你在改動前先確認影响范围。

蜘蛛池知识

蜘蛛池入口頁的 robots 設定:哪些寫法會把已经铺好的路堵死

入口頁铺出去以後,能不能被蜘蛛正常訪問、能不能沿着連結繼續往下走,很大程度上取决于和 robots 相關的几條指令。它們寫的地方很短,但一旦寫错,前面在域名、主机、内容上的投入都可能白費。下面把 robots.txt、meta robots、X-Robots-Tag 三個控制点在蜘蛛池场景下的用法和誤用理一遍。

三個控制点,作用范围完全不同

很多人把它們当成一件事,其實层級差別很大:

  • robots.txt 是站点級文件,管的是“蜘蛛能不能抓”,對所有入口頁统一生效。
  • meta robots 寫在 HTML 里,管的是“抓到之後怎么處理”,必须先能抓取到頁面才能讀到。
  • X-Robots-Tag 寫在 HTTP 响應头里,對非 HTML 文件同样有效,也最容易被忽略。

robots.txt:最容易一刀切的地方

Disallow 阻止的是抓取行為。這里有個经典冲突:如果入口頁被 Disallow,蜘蛛就讀不到頁面里的 noindex,结果是頁面可能仍然出現在索引里,只是缺少描述。想用 noindex 让頁面登出索引,前提是允许抓取。

另外两個容易翻车的地方是通配符和路径匹配。寫 Disallow: /entry 时,/entry-2、/entry-page 之類的路径可能被一起挡掉;路径匹配對大小寫敏感,複製粘贴时改了大小寫就會失效。如果同一台主机上放了多批入口頁或不止一個站点,改 robots.txt 前先確認它到底影响哪几個目錄。

meta robots:noindex 和 nofollow 用在入口頁意味着什么

入口頁的作用是被索引、並把抓取引向目标頁。加上 noindex,入口頁本身進不了索引;爬虫通常仍會繼續跟随頁面里的連結,但入口頁作為“入口”的價值就没了。加上 nofollow,則等于把連結传递的路径直接切断,蜘蛛被引到门口又被送走。

canonical 是另一種常被忽略的寫法。如果入口頁的 canonical 指向目标頁,等于告诉搜尋引擎“這個頁面不是獨立内容”,入口頁會被合並處理,前面的布置也就失去意义。入口頁的 canonical 一般指向自身即可。

X-Robots-Tag:藏在响應头里的開關

有些环境會在 CDN、反向代理或统一配置层加上 X-Robots-Tag: noindex。這種設定不在模板里,改頁面时看不出来,排查时也容易漏。批量检查时可以用 curl -I 或响應头工具,把一批入口頁的头部拉出来看一遍,確認没有多余的标簽。

常见誤用清單

  • 把測試环境的 robots.txt 直接複製到生产入口頁,Disallow 一並带過去。
  • 入口頁和承接頁共用一套模板,nofollow 被一起繼承下来。
  • 想“先藏起来”,结果 noindex 一直没去掉,入口頁長期不進索引。
  • 一邊用 robots.txt 挡爬虫,一邊指望它讀到頁面里的 noindex。
  • 通配符寫得太宽,把目标頁所在目錄也一起挡了。

一個可执行的检查顺序

  1. 取一批入口頁 URL,先看 robots.txt 是否允许訪問,把通配符展開後的實际匹配逐條核對。
  2. 拉响應头,確認没有額外的 X-Robots-Tag。
  3. 查看 HTML 里的 meta robots,確認没有 noindex、nofollow、none。
  4. 检查 canonical 是否指向自身或正确的入口頁地址。
  5. 在服務器日誌里確認蜘蛛真的訪問到了入口頁,而不是只請求了 robots.txt 就离開。
robots 類設定的改動成本很低,影响面却很大。改之前先拿小批量入口頁跑一遍,观察几天日誌,再决定要不要全量推送。

最後提醒一句:入口頁的 robots 配置不是一次设完就不管的事。模板更新、迁移主机、接入 CDN 都可能悄悄改掉這些設定。把上面五步做成一份固定清單,在每次批量投放前過一遍,比事後從日誌里反查要省事得多。