跳至正文
WordPress 与 WooCommerce · Google SEO

WordPress 密码保护页为什么会被收录

// / / 光算科技

很多人以为给文章设了密码,页面就没人看得见了。实际上密码只挡住正文,页面本身、它的标题、它的地址都还是公开可访问的,只要这个地址上没有任何索引指令,它就随时可能出现在结果里。

这一篇只讲密码保护页的收录判断与核对。WordPress 自身的行为引官方文档,索引相关的判断只引 Google 官方文档。

密码保护在 WordPress 里是怎么落地的

WordPress 官方代码参考里,判断一篇内容是否需要密码是一个独立函数(post_password_required()),核心负责的是判断和取回,而把密码表单、标题、正文哪些部分显示出来由主题决定。这就是"同一套密码设置,不同主题表现不一样"的原因:设置项只有一个,前台输出是另一回事。

所以这类页面的典型形态是:地址正常返回 200,页面里出现一个密码输入框,正文摘要或标题可能仍有一部分可见。抓取程序不需要密码就能取到这个页面。

这里要加一句版本边界:密码页在前台到底露出多少文字,由主题和插件共同决定,会随版本变化。WordPress 官方文档讲的是判断逻辑,没有承诺某个主题一定把正文完全藏起来,所以任何结论都要以你自己请求一次的结果为准,不要照抄别站的模板。

密码保护页的响应拆成地址、头部指令、页面可见文字三段,判断点是每段里到底有没有正文
原创示意:图中为密码保护页的响应拆成三段做检查,不是真实后台截图或数据。

收录的判断按三步走

  1. 请求这个地址,确认状态码,以及未输入密码时页面上到底能看到哪些文字。
  2. 看这个页面的 head 里有没有索引指令,指令是谁加的(主题、插件还是你自己)。
  3. 判断这个地址是否还需要独立被检索:需要就保留,不需要就换成 301 指向真正该去的地方。

第二步里最有用的一条来自 Google:robots meta 标签与 X-Robots-Tag 的说明把 noindex 定义为"不要在搜索结果中显示这个页面、媒体或资源",并且写明如果你不写这条规则,页面就可能被索引并展示。换句话说,密码保护页默认是"可被索引"的,需要你主动关掉。

同一份文档还有两句必须一起看:这些设置只有在允许抓取该页面的前提下才会被读取执行;多条规则冲突时,更严格的那条生效。所以如果有人已经用 robots.txt 把这个地址挡了,指令就读不到,页面在结果里的状态也会变得难以判断 —— 这种情况先解开 robots.txt,再看指令是否生效。

哪些内容本来就不该设密码

有两类内容更值得讨论。一类是本来就打算公开的内容,只是想先限制访问,这种情况下更该做的是先发出去再修,而不是长期挂着密码。二类是同一个内容有多个地址变体,这时要注意 Google 在关于如何指定规范 URL 的说明里的明确建议:不推荐用 noindex 去阻止某一页被选成规范页,理由是那样会把整页挡在搜索之外,官方给的替代方案是 rel="canonical"。换句话说,"我要合并几个地址"和"我要让某个地址退出结果"是两件不同的事,不该用同一条指令解决。

还有一类例外:付费或登录后才能看的会员内容,密码保护本来就是它的实现方式之一。这种情况下真正要核对的是这一页的索引指令有没有加上,而不是纠结要不要去掉密码。

怎么验证这个页面确实退出了索引

先复查请求:清掉缓存后重新请求一次,确认 head 里的指令就是你改的那一条,页面状态码符合预期。然后查残留。Google 在搜索操作符说明里提到可以用 site: 加路径前缀找某一类地址是否还有结果,同时提醒操作符受索引与检索限制影响,判断以 Search Console 的网址检查工具为准。对每个密码页提交一次网址检查,看它报告的索引状态。

最后确认一件事:不要把"搜不到了"当成唯一的验收标准。索引指令是否真正输出、跳转是否正确落地,才是可重复验证的部分;索引侧的更新官方没有公布时限,这一项只能持续观察。判断标签有没有真的输出,思路和WordPress 站内搜索页被收录:先查 noindex 有没有真正输出那篇相同,URL 变体的计数口径可以对着一条链接算一条还是多条看。