網站收錄

noindex、robots、canonical:控制收錄的三個指令各管哪一段

robots.txt、noindex、canonical 常被当成同一類工具,其實它們卡在收錄鏈路的不同环节:一個管能不能抓,一個管能不能進索引,一個管同内容多個地址留哪條。用错位置不但達不到目的,還可能让该收的頁面消失、不想出現的頁面繼續留在索引里。本文按鏈路拆開讲三者的邊界和常见誤用。

網站收錄

noindex、robots、canonical:控制收錄的三個指令各管哪一段

做站点运营的人常常把 robots.txt、noindex 和 canonical 当成同一類東西:都是“我不想让這個頁面被收錄”的工具。但三者在收錄鏈路里作用的位置完全不同,用错位置不但達不到目的,還可能让本该收錄的頁面消失,或者让不想出現的頁面繼續留在索引里。

先记住一條鏈路:發現、抓取、索引

一個 URL 要出現在搜尋结果里,大致要经過:蜘蛛發現這個地址、發起抓取拿到内容、判断内容是否值得進索引。三個指令分別卡在這條鏈路的不同环节上,混着用就容易互相打架。

robots.txt:管的是能不能抓

robots.txt 是抓取层面的约定,放在站点根目錄,告诉蜘蛛哪些路径不用来抓。它獨立于頁面内容存在,所以蜘蛛在抓取之前就能讀到。

這里有個经常被忽略的後果:被 robots.txt 挡住的 URL,並不會自動從索引里消失。如果這個地址通過外鏈、sitemap 或別的方式被蜘蛛知道,它可能仍然出現在索引中,只是没有摘要,结果頁上顯示的是一行光秃秃的連結。想彻底移除,必须让蜘蛛抓一次頁面、讀到 noindex 才行,而 robots.txt 恰好阻止了這次抓取。

robots.txt 适合用来节省抓取、挡住無意义的路径,不适合当作刪除收錄的手段。

noindex:管的是能不能進索引

noindex 寫在頁面层面,形式可以是 meta robots 标簽,也可以是响應头里的 X-Robots-Tag。對 PDF、图片這類非 HTML 文件,只能用後者。

它的生效前提是蜘蛛能抓到這一頁。所以当 robots.txt 和 noindex 同时指向同一個 URL 时,两者會互相抵消:抓不到,就讀不到 noindex,索引里的舊记錄也就一直留着。

還有两個细节值得注意:

  • noindex 要放在能被解析的位置,靠脚本後期插入、或者只寫在 iframe 里的,可能来不及被看到。
  • 從索引里去掉之後重新放開收錄,需要重新被抓取,节奏取决于站点整体情况,不會立刻回来。

canonical:管的是多個地址留哪一個

同一個内容常常有多個入口:带參數的、大小寫不同的、列表頁翻出来的。canonical 用来告诉搜尋引擎,這些地址里哪個是主版本。

它和上面两個指令最大的区別是:canonical 是提示,不是命令。搜尋引擎會结合内鏈、sitemap、外鏈指向和内容相似度,最终自己决定保留哪一條。你标了 A,它也可能留 B。

几種做法基本等于白标:

  • canonical 指向一個已经被 noindex 的頁面,两個信号互相矛盾。
  • 每頁都指向自己,但頁面之間内容高度重复,等于没提供任何信息。
  • canonical 指向另一個域名,跨站归並通常不會被采纳。
  • canonical 指向 404,或者中間隔着好几跳重定向的地址。

三個指令怎么配合

按目的来選,而不是按习惯来選:

  1. 頁面有價值,只是想換一個主地址:用 canonical 把重复版本指向主版本,不要用 noindex。
  2. 頁面完全不需要出現在搜尋里:用 noindex,同时確認它没有被 robots.txt 挡住。
  3. 這段路径只會消耗抓取、内容也没收錄價值:可以考虑 robots.txt,但要接受它可能仍以無摘要形式留在索引里。
  4. 已经收錄、現在想删掉:先撤掉抓取限制,让頁面能被抓到並讀到 noindex,等索引更新;紧急情况再用移除工具做临时處理。

一個简單的自查顺序

遇到某個頁面“该收没收”或者“不该收却收了”,可以按下面的顺序看一遍:

  • 先看 robots.txt 有没有挡住這個路径;
  • 再看源碼和响應头里有没有 noindex;
  • 然後看 canonical 是否指向自己,指向的地址能不能正常訪問;
  • 最後確認這個 URL 有没有内鏈或 sitemap 入口,蜘蛛有没有理由發現它。

這四步走完,大部分“指令互相打架”的問题都能定位到。真正的难点往往不在标簽本身,而在于站点里没人说得清這些标簽是谁、為了什么给谁加上的。把每條規則的来源记下来,比事後一個個頁面反查要省力得多。