本文约 3,867 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。
引言:急着提交收录,卡在第一步验证
新站上线后想让百度尽快收录,第一件事就是去百度搜索资源平台(ziyuan.baidu.com)注册并验证站点。但很多人第一步就卡住了:下载了验证文件、上传到根目录,点”完成验证”却提示”验证文件无法访问”;或者用了 HTML 标签验证,把代码贴进主题的 header.php,结果更新主题时被覆盖,过两天发现站点”未验证”,之前提交的数据全断。
验证这一步看着简单,其实有几个明确的坑:验证文件的访问路径必须是站点根目录下能被直接访问到的位置(不能被重定向、不能被拦截、不能返回 HTML 页面);HTML 标签必须输出在首页的 <head> 里且在缓存插件缓存之前;CNAME 验证需要你能操作域名解析。选哪种方式,取决于你对站点的控制权限。本文讲清三种方式的操作与取舍,以及验证失败的排查顺序。
原理分析:验证的本质是证明”这个域名归你控制”
百度的三种验证方式,本质上是三种不同的所有权证明:文件验证要求你能在站点根目录放一个指定文件(证明你控制服务器);HTML 标签验证要求你能在首页输出一段指定的 meta 标签(证明你能改页面代码);CNAME 验证要求你能给域名添加一条指定的 CNAME 解析(证明你控制 DNS)。
这三种方式的持久性差别很大:文件验证只要不删文件就一直有效,但服务器迁移、重装时容易丢;HTML 标签验证依赖主题输出,换主题或更新主题时最容易失效;CNAME 验证存在 DNS 解析里,与服务器无关,是最稳定的一种,只要域名解析不变就永远有效。
| 验证方式 | 需要的权限 | 稳定性 | 适用场景 |
|---|---|---|---|
| 文件验证 | 服务器文件写入 | 中(迁移易丢) | 有服务器权限、临时快速验证 |
| HTML 标签验证 | 修改主题代码 | 低(换主题易失效) | 无法上传文件到根目录时 |
| CNAME 验证 | 域名解析管理 | 高(与服务器无关) | 长期稳定、推荐首选 |
需要提醒的是:验证站点是后续一切操作的前提。只有验证通过后,才能使用抓取诊断、索引量查询、流量与关键词分析、死链提交、普通收录 API 推送等功能。验证失效会导致这些数据中断,所以推荐用 CNAME 方式做长期验证,另外两种方式可作为补充。
保姆级实操
- 注册并添加站点
访问百度搜索资源平台,用百度账号登录(没有就用手机号注册一个)。进入「用户中心 → 站点管理 → 添加网站」,填写协议 + 域名。域名形式有两种:https://example.com/ 和 https://www.example.com/,建议把两个都添加(它们是两个独立的站点实体),并确认你的站点已统一到其中一种形式(另一种做 301)。
- 方式一:文件验证(最快)
在验证页面下载验证文件(文件名类似 baidu_verify_xxxxxx.html),把它上传到站点根目录(public_html 或 /var/www/html),确保通过 https://你的域名/baidu_verify_xxxxxx.html 能直接访问到,内容就是文件里那串字符。上传后点”完成验证”。
# 在服务器根目录生成验证文件(把 xxxxxx 换成平台给你的实际文件名与内容)
cat > /var/www/html/baidu_verify_xxxxxx.html <<'EOF'
8f3c2a91d4e5b6c7
EOF
# 本地先验证一下能否直接访问、返回码是不是 200
curl -s -o /dev/null -w "%{http_code}\n" https://mimangfei.com/baidu_verify_xxxxxx.html
- 方式二:HTML 标签验证(无法传文件时用)
平台会给你一行 meta 标签,形如 <meta name="baidu-site-verification" content="xxxxxxxxxxxx" />。要把它放进首页 <head> 里。不要直接改主题的 header.php(更新主题会丢),正确做法是挂到 wp_head 上:
<?php
// 放在子主题 functions.php 或自建的小插件里,避免主题更新丢失
add_action( 'wp_head', function () {
echo '<meta name="baidu-site-verification" content="你的验证码" />' . "\n";
}, 1 );
如果用了 SEO 插件(Rank Math、Yoast、SEOPress),插件的设置里通常有专门的”站长工具验证”输入框,填进去即可,比自己挂钩子更稳妥。
- 方式三:CNAME 验证(推荐长期方案)
平台会给出一条形如 xxxxxx.example.com CNAME ziyuan.baidu.com 的解析记录。登录你的域名解析服务商(阿里云云解析、腾讯云 DNSPod、Cloudflare 等),添加一条 CNAME 记录:主机记录填平台给的前缀,记录值填平台给的目标地址,TTL 用默认即可。添加后等解析生效(通常几分钟,最长 48 小时),再点”完成验证”。
# 检查 CNAME 解析是否生效
nslookup -type=CNAME xxxxxx.mimangfei.com
dig CNAME xxxxxx.mimangfei.com +short
- 验证失败的逐项排查
按以下顺序排查,能解决九成问题:
| 现象 | 原因 | 处理 |
|---|---|---|
| 验证文件 404 | 上传到子目录或路径错 | 确认在站点根目录,浏览器直接打开确认 |
| 验证文件 301/302 | 被 HTTPS 或 www 规则重定向 | 放行该文件,见下方 Nginx 配置 |
| 验证文件返回首页 HTML | 被 WordPress 重写规则吃掉 | 在重写规则前加例外 |
| meta 标签找不到 | 主题没输出 wp_head、或被缓存 | 用缓存排除或换方式 |
| CNAME 不生效 | 解析未同步、或填错了主机记录 | 用 dig 验证,等待 TTL 过期 |
| 提示”文件校验错误” | 文件内容被编辑器加了换行/BOM | 用纯文本写入,勿用记事本 |
Nginx 下放行验证文件的配置写法(放在强制 HTTPS / 统一域名的规则之前):
# 让验证文件不被任何重定向规则影响
location = /baidu_verify_xxxxxx.html {
try_files $uri =404;
# 若整站强制跳转,这里单独放行:不要 return 301
add_header Content-Type text/html;
}
# 若已有统一的 https/www 跳转 server,务必在该 server 里也放行
location ~ ^/baidu_verify_.*\.html$ {
try_files $uri =404;
}
- 验证后的第一件事:提交站点地图并绑定工具
验证通过后立刻做三件事:在「资源提交 → 站点地图」里提交 sitemap.xml 地址;在「资源提交 → 普通收录」里拿到 API 推送接口地址(后续用程序主动推送新链接);确认站点属性(PC/移动)填写正确。站长平台各个模块的具体用法可参考 百度站长平台各功能模块详解。
常见踩坑
- 验证文件上传到了 WordPress 安装目录的子目录:
https://域名/baidu_verify_xxx.html返回 404,实际要放到 web 根目录。 - 案例:某站点用 HTML 标签验证成功后,两个月后换主题,新主题没有保留那段 meta 标签,站点状态变回”未验证”,期间提交的 sitemap 与数据全部中断,运营完全没察觉。改用 CNAME 验证后彻底解决——DNS 记录与站点程序无关,换主题、换服务器都不影响。
- 开了缓存插件,验证文件被缓存成首页 HTML:刷新缓存后再验证,或临时关闭缓存。
- CDN 拦截了验证文件:部分 CDN 只缓存静态后缀,但会把
.html请求回源时带上特殊处理,可在 CDN 控制台把该路径设为不缓存。 - 域名填成了
www.example.com而实际站点跳到example.com:验证时抓取的是跳转后的地址,导致失败。应该先统一域名形式再验证。 - 用记事本编辑验证文件:文件末尾多了换行或 BOM,内容校验不通过。
- 验证完就不管了:应定期检查站点状态是否仍为”已验证”,建议每季度看一次。
总结
验证方式的选择标准很明确:能操作 DNS 就用 CNAME(最稳定、与服务器无关),不能就用文件验证(最快),两者都不行才用 HTML 标签(最易失效)。验证失败时按”能不能直接用浏览器打开 → 返回码是不是 200 → 内容是不是完全匹配”三步排查,九成问题在前两步。验证通过后不要停,立刻提交站点地图并配置 API 推送,这两个动作才是真正加快收录的关键。至于验证之后的索引量查询、抓取诊断、死链提交等操作,见 百度站长平台各功能模块详解。配合 网站上线后 30 天的运营动作清单 一起执行,新站第一周的收录节奏会明显更快。
