建站调试的那段时间,页面还没做完就挂在了域名下,本来想着"反正没人知道",半个月后搜一下站点名字,内部测试页已经躺在百度结果里了。更常见的是另一种情况:某个页面因为业务调整不想再对外展示,运营在robots.txt里加了一条禁止抓取的规则,过了一个月再搜,页面还在,快照还在,点进去甚至还能看到内容。很多人到这一步才开始怀疑,网上教的办法是不是根本不管用。
先把口径对齐一下:大家平时说的"被百度推荐",在搜索引擎的语境里对应两件事——页面被收录进索引、再在搜索结果里展示出来。所以"不想被推荐"落到操作层面,就是不想被收录、不想被展示。本文讲的都是这件事。
这件事不算复杂,但有一个分水岭必须先迈过去:搜索引擎内部是"抓取"和"索引"两层独立的机制。拦蜘蛛和禁止收录是两件不同的操作,混着用就会出现"明明拦了,页面却还在"的情况。下面把这套机制讲透,再给你站点级、页面级、已收录清理三套具体做法。
一、先分清两层楼:不让它来看,和不让它展示
搜索引擎处理一个页面要走两步:第一步派蜘蛛把页面抓回去,第二步判断这个页面值不值得放进索引库、要不要在结果里展示。这两步各有一套"开关",用错了楼层,动作再勤快也没效果。
抓取层:robots.txt 说了算
robots.txt 是放在网站根目录的一份"访客须知",告诉蜘蛛哪些目录、哪些地址别进来。它管的是能否访问,相当于在门口挂了个牌子。
索引层:noindex 说了算
noindex 写在页面代码里,告诉搜索引擎"可以看,但别存进索引库、别拿去展示"。它管的是是否收录,相当于在屋里贴了张"谢绝归档"的告示。
现在就能解释那个经典现象了:在 robots.txt 里禁止抓取后,页面为什么还在搜索结果里?因为禁止抓取只拦住了"来看"这一步,已经躺在索引库里的旧档案不会因为门口挂了牌子就消失。更麻烦的是,蜘蛛进不来,它就读不到页面上的 noindex 告示,你说"谢绝归档"它根本收不到。两层楼的开关用反顺序,页面反而卡在索引里出不去。
想清理一个已经被收录的页面,正确顺序是"先让它能被抓取、页面上加 noindex,等页面从索引里消失,再考虑加 robots 拦截"。一上来就拦蜘蛛,等于把沟通的门先关上了。
二、什么情况才值得动这些开关
先把立场说在前面:对绝大多数正常运营的站点来说,被收录是求之不得的事,这些开关不是日常工具。屏蔽收录只在这几种场景下才是合理选择,对号入座之后再动手。
页面没定稿、文案还在改,先别让搜索引擎收录半成品。等正式上线再放开,避免旧版本被搜到造成误导。
后台登录页、测试数据页、含内部信息的资料页。这类页面的第一道防线其实是访问权限,收录控制只是辅助。
业务调整取消了某个栏目或页面,正确的做法是把页面改成 404 状态,配合死链提交,让搜索引擎把旧档案清掉。
反过来,如果只是"觉得某个页面写得不好"或者"暂时不想让同行看到",动收录开关就是拿错药了。收录控制解决的是"该不该被搜到"的问题,解决不了"内容本身值不值得看"的问题,后者练的是内容功夫。
三、站点级拦法:robots.txt 的正确写法
robots.txt 是一个纯文本文件,放在网站根目录下,文件名必须是小写的 robots.txt。全站通用的规则写起来很简单,比如只想拦住百度蜘蛛对两个目录的访问:
User-agent: BaiduspiderDisallow: /admin/Disallow: /test/Baiduspider 是百度蜘蛛的标识,写在这里表示规则只针对百度。如果想让所有搜索引擎都别来,用通配符:
User-agent: *Disallow: /Disallow: / 表示"整站都不许抓",这是杀伤力最大的一条写法,正常运营的站点千万确认好再上线。想在全站拦截里给某个目录开个口子,可以另外声明放行规则,相当于"整体谢客、钥匙留在某扇门"。
写的时候有四个细节容易被忽略,逐条对照检查:
放在子目录里搜索引擎不会去读,等于白写。地址就是你的域名后面直接跟 /robots.txt。
多个禁止目录要写成多条 Disallow,不要挤在一行里;冒号用英文半角,写完在浏览器里访问一遍确认能打开。
"上线前先全站屏蔽"是常规操作,但上线时忘记删掉这条,就是一批站被搜索引擎整体降冷的经典事故。
robots.txt 谁都访问得了。想通过"在拦截规则里写路径"藏住敏感目录,等于把目录名直接公布出来,此路不通。
四、页面级拦法:noindex 写在哪、怎么写
如果只想让个别页面不被收录,动整站的 robots.txt 就过头了,正确的位置是在页面的代码里加一行 noindex 标签,写在页面头部的 head 区域:
<meta name="robots" content="noindex,nofollow">noindex 是"别收录",nofollow 是"别顺着这个页面的链接继续爬",两个一起写,页面就等于从搜索引擎的视野里隐身了。如果只想针对百度单独设置,把名字换成百度蜘蛛的标识:
<meta name="baiduspider" content="noindex,nofollow">标签要写在 head 里、字母全小写、逗号不留空格。用脚本动态往页面里插入这段代码的做法不可靠,搜索引擎未必执行脚本后再读标签,稳妥做法是让页面初始代码里就带着它。
到这里,四类方法的适用位置就齐了,放一张表对照着选:
| 方法 | 管哪一层 | 适用场景 | 注意点 |
|---|---|---|---|
| robots.txt | 抓取层 | 整站或整个目录长期不希望被访问 | 不负责清理已收录的旧档案 |
| meta noindex | 索引层 | 个别页面不想被收录、想从结果里清掉 | 蜘蛛要能进来才读得到 |
| 响应头指令 | 索引层 | PDF、图片等改不了HTML的文件 | 需要服务器配置权限 |
| 访问权限控制 | 访问层 | 后台、内部资料等本就不对外的页面 | 即时生效,是最硬的一道门 |
选方法的原则按"对谁生效"来:页面压根不该被外人看到,用访问权限;页面可以看但不希望进结果,用 noindex;整个目录长期不欢迎搜索引擎,才用 robots.txt。顺序从轻到重,别一上来就用最重的。
五、已经被收录了,怎么让它退出去
前面讲的是"别让它进来",接下来是更常见的场景:页面已经在结果里了,怎么清掉。先按页面的去留分成两条路:页面还想要、只是不想被搜到,走 noindex 路线;页面彻底不要了,走 404 加死链提交的路线。
页面继续运营就选"隐身"路线,彻底下线就选"拆除"路线。两条路后面的操作完全不同,先做选择再动手。
隐身路线:加 noindex 标签,并保持蜘蛛能正常抓取;拆除路线:让页面返回 404,不留内容。
登录百度搜索资源平台,在链接管理里找到删除相关入口,提交需要处理的地址;页面已删除的走死链提交。
处理不是即时的,一般以天到周计。隔几天搜一次目标页面,还挂着的补一次提交,别急着反复催。
这里要特别提醒一个细节:如果你先加了 robots 拦截再去做 noindex,整个过程会卡死。蜘蛛被拦住,读不到你新加的标签,索引里那条旧记录没有任何更新的理由,能挂多久就挂多久。正确的顺序只有一个方向:先恢复抓取、让蜘蛛读到 noindex,等索引清空,最后才是收网拦截。
网上流传的"闭站申请"属于把所有页面一次性退出的重手段,适合整站彻底停止运营的场景。只是个别页面要清理,别用这种伤敌一千自损八百的操作,正常走 noindex 或死链通道就够了。
六、三个容易踩的坑,动手前先看一眼
方法都讲完了,最后把新手最容易翻车的三个地方摆出来,对照着排查一遍:
在服务器配置里直接封禁蜘蛛的访问来源。这招动静最大、收益最小:已收录的记录照样在结果里,还可能误伤同一个网络环境里的正常访问;哪天想让站点重新被收录,恢复过程反而更费劲。
把收录控制当成"藏问题"的工具。内容有问题就删掉改掉,靠屏蔽躲不过平台的审核规则,真被处理起来连申诉的余地都小。屏蔽收录是正常的运营动作,不是遮羞布。
多站运营时配置串台。测试站的屏蔽规则被照抄到正式站,或者新站上线直接套用了旧站的拦截文件,是最常见的事故来源,正式发布前务必在浏览器里访问一遍 robots.txt 核对。
站多了以后,这类"配置串台"靠人记住是不现实的。用UC建站系统做多站管理,模板和站点配置在后台统一维护、每个站独立部署互不干扰,测试环境和正式环境分开走,拦截规则这类容易出事的配置改动一次、全站生效,省下的正是前面这种核对工夫。
七、把顺序刻在脑子里
回到标题里的那个问题:为什么光在 robots 里拦一道没用?因为"不让它来看"和"不让它展示"是两层楼的事,拦住门客,屋里那张请勿归档的告示就永远递不出去。先把该沟通的沟通到位,再决定关不关门,页面才走得干净。
先让蜘蛛进得来读完标签,索引才会松手;
先把它拦在门外,它就永远停在索引里。
最后补一句心态上的话:收录控制是一把急救箱里的工具,不是每天的保健操。正常做站,精力该花在内容和体验上;真到了需要让某个页面从搜索结果里消失的场合,按本文的顺序一步步走,多半用不上什么偏方。该来让来时来,该走让走时走,这门手艺的价值不在频繁使用,而在需要的时候一次做对。


