一個很常见的操作是:某個栏目、測試目錄或後台入口不想被搜尋引擎收錄,于是在 robots.txt 里 Disallow 掉。過一段時間用 site: 一查,發現相關 URL 還是出現在索引里,只是没有摘要。這时候很多人以為是搜尋引擎不听话,其實多半是用错了工具。
抓取和收錄是两步,顺序不能颠倒
搜尋引擎處理一個 URL,大致分两步:先抓取,把頁面内容下载回来;再判断内容质量、去重,决定是否编入索引。
robots.txt 作用在第一步,告诉爬虫哪些路径不要来抓;noindex 作用在第二步,告诉搜尋引擎這個頁面不要放進索引。两者管的环节不同。
關键在于:noindex 是一段寫在頁面里的指令,搜尋引擎必须先抓到頁面,才能讀到它。如果 robots.txt 已经把這條 URL 挡住了,爬虫根本進不来,也就永遠看不到頁面里的 noindex。
robots.txt 挡抓取後,頁面反而可能被收錄
很多人以為 Disallow 等于刪除。實际上 robots.txt 只是請求爬虫不要抓取,它並不阻止 URL 出現在索引里。原因不复杂:搜尋引擎可以通過外鏈、站点地图、其他頁面的連結知道這個 URL 存在。当它被較多連結指向、或本身就是別處引用過的地址时,搜尋引擎可能僅凭連結和锚文本就把它展示出来,只是内容摘要缺失。
反過来,這样一條“被索引但没有内容”的记錄會很难處理:你既控制不了它顯示什么,也没法靠 noindex 让它登出。
按需求選工具
- 完全不想被收錄、頁面可以保留:用 noindex,同时确保 robots.txt 允许抓取這條 URL。
- 只想减少爬虫压力、頁面本身可以收錄:用 robots.txt Disallow,但要接受它仍可能被索引。
- 頁面已经刪除:返回 404,長期不再需要的用 410,比 robots 或 noindex 更直接。
- 整站或整目錄敏感、连抓取都不允许:robots.txt Disallow,但要清楚索引里可能残留 URL,必要时再配合搜尋後台的移除工具。
几個容易用错的场景
- 測試环境加了 robots.txt,但還是被搜到。爬虫没抓頁面,noindex 讀不到;如果測試站又被外鏈引用,就更容易進入索引。
- 登入頁、後台入口想隐藏。只寫 Disallow 往往不够,URL 一旦被外部引用,仍可能出現在结果里。
- 分頁、篩選參數只想拦抓取。可以 Disallow,但不要指望它們就此彻底消失。
- 頁面里寫了 noindex,robots.txt 又同时 Disallow 同一路径。结果是 noindex 失效,白寫。
怎么驗證自己的設定
检查顺序可以固定下来:先在搜尋引擎的抓取測試或 URL 检查工具里,確認這條 URL 是否被 robots.txt 阻止;如果被阻止,回头確認自己的真實目的——是想不抓,還是想不收錄;如果目的是不收錄,就先放開抓取、保留 noindex,再等重新抓取後观察索引變化;如果頁面已经刪除,直接返回 404 或 410 更省事。
记住一條判断顺序:先想清楚要不要它進入索引,再决定要不要让爬虫抓。抓取只是手段,索引才是结果。