location = /wp-login.php {
add_header X-Robots-Tag "noindex, nofollow" always;
}
site:example.com 的结果里出现 wp-login.php,摘要还带着「用户名或邮箱」几个字。robots.txt 里明明写了 Disallow: /wp-login.php。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,robots.txt 只挡抓取,不挡已经建好的索引;别人外链过这个地址,搜索引擎早就收录了。Disallow 之后蜘蛛连 noindex 都读不到,页面就一直留在结果里。
「登录页被收录」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
处理上按这个顺序:先把 robots.txt 里对 wp-login.php 的 Disallow 去掉,让蜘蛛能重新抓到页面;给 wp-login.php 单独加 X-Robots-Tag: noindex,用 nginx add_header 就行;到搜索资源平台提交移除,重新抓取后再决定要不要恢复 robots 规则。
改完只确认一件事:curl -I 该地址能看到 X-Robots-Tag 响应头,两周后 site 查询里不再出现登录页。
