蜘蛛池把 URL 投出去之後,蜘蛛能不能顺着通路走進目标頁面,除了线路本身,還取决于目标頁面自己给出的指令。canonical、noindex、robots meta 這些寫在 HTML head 里的标簽,看起来是细枝末节,但它們直接决定蜘蛛進来之後是繼續抓、放弃抓,還是把注意力轉移到別處。不少投放看起来“没反應”,問题其實出在這一层。
頁面級指令為什么會干扰投放
蜘蛛池的作用是制造入口、增加 URL 被發現的概率。但發現只是第一步,蜘蛛真正抓取頁面时,還會讀取頁面自身给出的信号。如果這些信号和投放意图相反,就會出現一種尴尬狀態:日誌里明明有蜘蛛来過,流量和狀態却都停在原地。
三類常见的指令冲突
canonical 指向了別的地址
canonical 的作用是告诉搜尋引擎“這個頁面的正式版本在哪”。如果目标頁面的 canonical 指向了另一個域名、另一個栏目,甚至一個打不開的地址,蜘蛛就會認為目前 URL 不是需要獨立對待的版本,投放出来的入口價值被稀释。反過来,如果希望這個 URL 被当作獨立落地頁看待,canonical 應当指向自身。
批量建站时最容易出問题的是模板:一套模板被複製到多個域名上,canonical 却仍然是同一個寫死的地址。上架前逐個核對不現實,但至少要抽查几種模板,確認 canonical 的取值逻辑跟實际部署一致。
noindex 没有清掉
測試阶段為了避免頁面提前被公開,很多人會加 noindex,或者通過响應头下發 x-robots-tag。上线时忘了移除,就會出現“蜘蛛照常来抓,頁面却不進入索引”的情况。此时监控資料里抓取量是正常的,很容易被誤判為通路没問题,從而把排查方向带偏。
這類問题的麻烦之處在于:它不會报错,也不會让服務器返回異常狀態碼,頁面就是普通的 200。
robots meta 與 robots.txt 規則打架
常见的誤解是:robots.txt 里禁止抓取,可以用頁面上的 noindex 来兜底。實际上,robots.txt 一旦禁止抓取,蜘蛛通常不會去讀取頁面内容,自然也就看不到 meta 指令,结果是 URL 有可能仍以其他方式被收錄,頁面却完全没有可控信号。
另一種反向情况是 robots.txt 放行、頁面 meta 却寫了 noindex,蜘蛛白跑一趟。两種規則應当分工明确:robots.txt 管“能不能抓”,meta 與响應头管“抓了之後怎么處理”,不要让它們互相代替。
投放前的自查顺序
- 看响應狀態:目标 URL 是否稳定返回 200,是否有多跳 301 鏈。
- 看响應头:是否下發 x-robots-tag、canonical 之類的 HTTP 級指令,優先級通常高于 HTML 内的同名标簽。
- 看 head 内容:meta robots、canonical、meta refresh 的具体取值。
- 看跳轉鏈:JS 跳轉、meta refresh 與 301 混用时,鏈條越長,中途被放弃的概率越高。
- 看模板批量情况:抽样检查不同模板生成的頁面,確認没有寫死的指令残留。
一点使用建议
- 把頁面級指令纳入上架检查項,和域名解析、證书一样当成基础配置。
- 保留一份指令變更记錄,改過 canonical 或移除過 noindex 的批次單獨标注。
- 批量掃描比逐頁人工看更可靠,尤其是有多套模板並行的时候。
- 發現抓取正常但毫無沉淀时,先怀疑指令层,再怀疑通路层。
蜘蛛池解决的是“让 URL 被看见”,頁面指令解决的是“看见之後怎么處理”。這两件事分属不同环节,谁都不能替谁兜底。