後台頁、篩選參數頁、临时活動頁、重复的列表頁——站点里總有一些 URL 不该出現在搜尋结果里。這时候常被翻出来的三個工具是 robots.txt、noindex 和 canonical。它們确實都能影响收錄结果,但作用的环节完全不同,混着用经常得到相反的效果。
先分清三件事:能不能抓、要不要索引、留哪個版本
收錄大致可以拆成两步:蜘蛛先把 URL 抓下来,搜尋引擎再决定要不要把它放進索引。三個工具分別卡在不同的位置上。
- robots.txt:管抓取。寫了 Disallow,蜘蛛通常不會去請求這個 URL,也就讀不到頁面内容。
- noindex:管索引。寫在 head 里的 meta 标簽或响應头中,但蜘蛛必须抓到頁面才能看到它。
- canonical:管版本選擇。它不阻止索引,只是提示“這几個内容相近的 URL 里,哪個是主版本”。
一句话记法:robots.txt 是不让人進门,noindex 是让人進了门也別登记,canonical 是说“登记這一個就够了”。
最常见的坑:robots.txt 和 noindex 一起用
如果一個頁面既被 robots.txt 挡住,又加了 noindex,蜘蛛抓不到頁面,自然讀不到 noindex,那個标簽等于不存在。结果是頁面可能仍以“僅 URL”的形式留在索引里,而你也没有別的办法把它請出去。
想移除一個已经收錄的頁面,顺序一般是:先放開抓取,加上 noindex,等索引里确實不见了,再决定要不要重新挡抓取。急着先 Disallow,往往把問题拖得更久。
不同场景该怎么選
内容有價值,只是存在多個版本
用 canonical 指回主版本,或者直接 301。不要用 noindex 一刀切,否則主版本也會丢掉入口。
内容没必要出現在搜尋结果里
比如後台、訂單頁、測試頁。加 noindex,同时保持可抓取,让蜘蛛能讀到這個指令。這類頁面通常也不必做内鏈。
纯内部搜尋、接口、無限滚動的參數组合
這類 URL 數量可能极大,用 robots.txt 减少抓取浪費是合理的,但要接受一個前提:已经收錄的舊 URL 不會因為 Disallow 就自動消失,该清理的還是要走 noindex 或者 404/410。
頁面已经废弃
有替代頁面的用 301,没有的用 410 或 404,比留着 noindex 更干净——noindex 的頁面本身仍占一個 URL。
几個容易忽略的细节
- noindex 和 canonical 同时出現在一個頁面上,信号會互相干扰,尽量避免。
- canonical 要指向真實可訪問、可被抓取的 URL,指向一個 404 或重定向地址基本無效。
- canonical 是建议不是命令,搜尋引擎仍可能按自己的判断選擇版本。
- 响應头里的 X-Robots-Tag 對 PDF、图片等非 HTML 资源同样有效,meta 标簽則不行。
上线後的驗證顺序
- 用 URL 检查類工具看蜘蛛實际抓到的 HTML 里有没有 noindex,canonical 是否被识別。
- 確認 robots.txt 没有把需要讀取 noindex 的頁面挡住。
- 翻服務器日誌,看這些頁面有没有被抓過。日誌里一次都没有,說明卡在抓取环节,先解决那一步。
- 用 site: 粗略观察某個目錄下還剩多少 URL,只看趋势,數字本身不精确。
- 给足時間。指令要等重新抓取才會被讀到,观察周期通常以周計。
收錄控制是一個“發出建议、然後等待”的過程,没有哪個标簽是按下就立刻生效的開關。