先分清:robots.txt 管“能不能讀”,meta 管“讀完怎么處理”
robots.txt 在抓取之前生效,蜘蛛看到 Disallow 通常就不来讀頁面;而 meta robots 标簽寫在 HTML 的 head 里,前提是蜘蛛已经把頁面抓下来了。所以如果 robots.txt 已经把入口頁挡住,meta 里寫什么其實没人看得到。排查时的顺序應该是:先看服務器日誌有没有抓取請求,再看响應内容里有没有 meta 指令。
noindex 最容易被“顺手複製”
noindex 的意思是“不要把這一頁放進索引”。對入口頁来说它往往是致命的:入口頁存在的意义就是被發現、被跟進,被 noindex 之後,蜘蛛可能仍然抓取,但不會把它当成有效的落点,連結传递的判断也會變得模糊。
- 從別的項目模板複製来的 head,带着一行 noindex 一直没删。
- 測試环境為了防止被爬加過 noindex,上线时忘了去掉。
- 用 CMS 或建站程序批量生成入口頁,插件預設给所有頁面加了 noindex。
- 以為“入口頁本来就不需要被收錄”就随手加上,结果連結库的作用被大幅削弱。
检查方式很简單:把入口頁 URL 抓下来,直接在 head 里搜 noindex,別只看後台設定界面。
nofollow 用多了,出鏈就白挂了
入口頁常需要挂一些導航、友鏈、聚合連結。如果给這些連結统一加 rel="nofollow",等于告诉蜘蛛“這些連結不必跟”。当整個入口頁的出鏈几乎全是 nofollow 时,頁面在連結發現上的作用就會被削弱。
更稳妥的做法是按用途区分:真正希望被跟進的連結保持預設,明顯的广告位、後台入口、無意义跳轉再加 nofollow;不要用一行全局規則把整頁出鏈一刀切。
canonical 指错地方,等于自己交出归属
canonical 表達的是“這一頁的正規版本是哪個 URL”。入口站常见的問题有:
- 所有入口頁都 canonical 到首頁,等于告诉蜘蛛每個入口頁都是首頁的副本。
- 多個入口域名共用一套模板,canonical 里寫着主站域名,把归属指向了別處。
- canonical 寫成带參數的版本,或者 http/https、带 www 與不带 www 混着寫。
入口頁一般更适合 canonical 自指,也就是指向自己的規范 URL,並保持协议、主机名、路径一致。改版或換域名时,canonical 要和 301 一起調整,別只改其中一個。
顺带提两個容易被忽略的标簽
meta keywords 早已不參與判断,堆一串關鍵詞没有實际作用,反而容易暴露模板痕迹。meta refresh 用来做跳轉时,蜘蛛的處理方式不如 301/302 明确,延迟设得太長也可能让人和蜘蛛都困惑;入口頁需要跳轉时,優先考虑狀態碼跳轉。
可以定期跑的检查清單
- 随机抽 10 到 20 個入口頁,抓取源碼,確認 head 里没有意外的 noindex、nofollow。
- 確認 canonical 與頁面自身 URL 一致,协议、主机名、路径都没寫错。
- 對比 robots.txt 與 meta 指令,避免一處放行、一處拦截。
- 把這几項寫進上线流程,模板改動後重跑一遍。
- 观察蜘蛛日誌里的抓取量與响應狀態,判断指令調整後的實际表現。
meta 指令本身不會带来抓取,它只决定蜘蛛讀到頁面之後怎么處理。入口頁的日常工作,是把這些不该有的限制清掉,而不是指望某個标簽能带来額外好處。