站点运营

站点运营:预览页与测试目录自查,别让半成品页面漏进抓取范围

预览页、草稿页和测试目录常常藏在主域名下,没有导航入口却能被外部访问。本文梳理它们常见的泄露来源,以及对重复内容和用户体验的影响,并给出一份可执行的自查清单和预览环境隔离做法,帮站点把半成品页面挡在抓取范围之外。

站点运营

站点运营:预览页与测试目录自查,别让半成品页面漏进抓取范围

做站点运营的人大多遇到过这种情况:某天在抓取日志里看到一个陌生地址,点开一看,是半年前开发时留下的测试页,或者编辑还没写完的草稿。这类页面平时没人访问,却可能躺在主域名下面,静静等着被外部链接、sitemap 或站内某个错误链接带到蜘蛛面前。

预览页通常从哪些地方漏出去

预览和测试页面很少是故意放出去的,多数是流程上的顺手操作留下的痕迹:

  • CMS 自带的预览功能,地址形如 ?preview=1/preview/xxx,只要知道链接就能打开,不校验登录状态。
  • 编辑器自动保存的草稿被意外设为公开,栏目列表里看不到,但 URL 可以访问。
  • 开发同学为了图方便,把 test.htmldemo/new/ 这类目录直接传到网站根目录。
  • 改版时把旧站整站复制到 /old/ 或子目录,上线后忘了删。
  • 数据库备份、压缩包、编辑器临时文件(.bak.swp.zip)留在了可访问目录里。

这些问题单独看都不算大,但它们的共同点是:没有导航入口,也没有被纳入日常检查,所以往往存在很久才被发现。

漏出去之后会带来什么麻烦

比较直接的影响有三类。一是内容重复:测试页常常是正式页面的复制品,标题和正文几乎一样,两个地址同时存在会让搜索引擎难以判断哪个是正式版本。二是浪费抓取资源:蜘蛛来过一次没价值的页面,就少了一次访问有效内容的机会。三是用户体验受损,访客从外链或搜索结果点进来,看到的是没配图、没排版、写着「测试」两个字的半成品。

判断标准很简单:这个地址如果被陌生人看到,你是否愿意为它的内容负责?如果答案是否定的,它就不该出现在公开可访问的位置。

一份可执行的自查清单

  1. 用服务器或 CDN 日志,筛出最近一个月内被访问过的、不在导航和 sitemap 里的地址。
  2. 检查根目录和常见子目录,看是否存在 test、demo、bak、old、tmp 这类命名的文件或文件夹。
  3. 抽几个 CMS 预览地址,退出登录后再打开,确认是否仍会返回内容。
  4. 检查编辑角色权限,确认「草稿」「待审核」状态的文章不会生成公开可访问的静态页。
  5. 确认备份文件、日志文件、配置文件不在 Web 可访问目录内。

把预览环境隔离开

比起事后清理,更省事的做法是从源头隔离:

  • 预览站放到独立子域名,并在该子域名的 robots.txt 中整体禁止抓取,同时加上 HTTP 基础认证。
  • 必须放在主域名下的预览,用服务器规则限制来源 IP 或校验登录 Cookie,未通过时直接返回 403。
  • 开发目录统一放在内网或本地,通过反向代理访问,不要直接传到生产站点目录。
  • 发布流程里加一步比对:上线前对照目录清单,确认没有多出计划外的文件。

已经漏出去了怎么办

如果确认某个半成品页面已经能被外部访问,处理顺序建议是:先让页面返回 noindex,并且保持页面本身可以正常访问一段时间,让蜘蛛有机会读到这个标记;之后再决定是改成 301 跳到正式页面,还是直接删除。需要注意两点:用 robots.txt 屏蔽抓取,蜘蛛就读不到 noindex;用 401 或 403 挡住访问,同样读不到。想让页面退出索引,前提是蜘蛛进得去、看得到标记。

另外,别忘了把导致泄露的入口一并修掉。如果 sitemap、栏目列表或内链里本来就指向这些地址,只处理页面本身,下次生成还会再冒出来。

小结

预览页和测试目录的问题不在于技术难度,而在于有没有人定期看一眼。把它纳入每月一次的结构检查,配合发布前的目录比对,就能用很小的成本避免大部分麻烦。站点运营的很多工作都是这样:不是做加法,而是把不该出现的东西挡在门外。