新站被 Bing 提示「抓取能力有限」:一次完整排查记录
新站上线一段时间后,打开 Bing Webmaster Tools,看到两句提示:
我们对网站的爬取能力有限 外链过少
大多数人第一反应是「哪里配置错了」,然后开始乱改。实际上这两句话指向的是同一件事,而且大概率不是技术故障。
下面是一次完整的排查记录。
第一步:确认爬虫有没有被拦
先别急着改配置,用 bingbot 的 UA 直接请求,看服务器怎么回应:
curl -s -o /dev/null -w "%{http_code}" \
-A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" \
https://example.com/
返回 200 说明抓取通道正常;返回 403 才说明是防火墙、CDN 或安全策略拦了。
再分别检查首页和一篇内页,如果都是 200,就可以排除「被拦截」这个方向。
第二步:检查重定向链
重复内容会浪费抓取预算,检查三组:
curl -sI https://example.com/ # 期望 200
curl -sI http://example.com/ # 期望 301 到 https
curl -sI https://www.example.com/ # 期望 301 到裸域
如果 http 或 www 返回 200 而不是 301,说明同一个页面存在多个可访问地址,搜索引擎需要自己判断哪一个是正主,这会直接消耗抓取配额。
第三步:检查 robots 与 sitemap
curl -s https://example.com/robots.txt
curl -s -o /dev/null -w "%{http_code}" https://example.com/sitemap.xml
常见错误:
- robots.txt 里写了
Disallow: /,全站被禁止 - sitemap 地址写错,或者返回 404
- sitemap 里包含已经删除的页面,爬虫点进去全是 404
特别注意:sitemap 里的每一个 URL 都必须真实存在。建议逐个校验:
# 直接跑一遍,看有没有非 200
for u in $(grep -o '<loc>[^<]*' sitemap.xml | sed 's/<loc>//'); do
echo "$(curl -s -o /dev/null -w '%{http_code}' "$u") $u"
done
我这次排查时,sitemap 里 26 个 URL 全部返回 200,才敢去提交。如果带着 404 去推,等于主动告诉搜索引擎「我这里有问题」。
第四步:找出那个「不一致的跳转」
这一步最容易被忽略。用 GET 和 HEAD 分别请求同一个没有斜杠的路径:
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/blog/hello
curl -sI https://example.com/blog/hello | head -1
我在自己的站点上就遇到了这种情况:
- GET 返回
307(临时重定向) - HEAD 返回
404(对象存储的 JSON 错误)
307 是临时跳转,爬虫会持续回访原地址,不会把权重合并到目标页。正确做法是统一改成 301:
路径不以 / 结尾,且不含 "." → 301 到 路径 + "/"
这条规则要在 CDN 或服务器层配置,前端代码改不了。
第五步:检查 sitemap 的 lastmod
如果你的站点用 next-sitemap 这类工具生成 sitemap,打开看一眼:
<url><loc>https://example.com/blog/a/</loc><lastmod>2026-11-14T07:00:47.974Z</lastmod></url>
<url><loc>https://example.com/blog/b/</loc><lastmod>2026-11-14T07:00:47.974Z</lastmod></url>
如果所有页面的 lastmod 一模一样(都是构建时间),搜索引擎就无法判断哪篇文章真正更新过,你也失去了「更新旧文章」这个加速收录的手段。
next-sitemap 的修正方式:
module.exports = {
autoLastmod: false, // 默认 true,会用构建时间覆盖你返回的值
transform: async (config, path) => ({
loc: path,
lastmod: getPostDate(path) || new Date().toISOString(),
priority: path === "/" ? 1 : 0.7,
}),
};
两个坑:transform 收到的 path 不带结尾斜杠;不要在返回值里展开 config,否则会把内部字段写进 XML。
第六步:确认真正的原因
上面五项全部正常,那 Bing 的提示就只剩一个解释:站点权重不足。
「抓取能力有限」和「外链过少」是同一件事的两面——新域名没有历史积累,外链几乎为零,Bing 不愿意分配太多抓取配额。这不是配置问题,改代码解决不了。
能做的只有两件:
- 用 IndexNow 主动告诉 Bing「有新内容」
- 持续产出内容,并逐步积累外链
第七步:用 IndexNow 缩短发现时间
在站点根目录放一个密钥文件,文件名和内容都是同一个随机串:
https://example.com/8f4d2a91c6b348e7a5d0f1c9b7e24d63.txt
→ 内容:8f4d2a91c6b348e7a5d0f1c9b7e24d63
然后批量提交:
curl -X POST "https://api.indexnow.org/indexnow" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"host": "example.com",
"key": "8f4d2a91c6b348e7a5d0f1c9b7e24d63",
"keyLocation": "https://example.com/8f4d2a91c6b348e7a5d0f1c9b7e24d63.txt",
"urlList": ["https://example.com/blog/a/"]
}'
返回 200 表示全部接受。配合构建脚本,每次发布自动推送即可。
本次排查的修复清单
| 问题 | 处理 |
|---|---|
| 所有页面 lastmod 相同 | 改为按文章真实日期输出 |
| RSS 引用存在但地址 404 | 构建期生成 feed.xml |
| sitemap 混入内部字段、误收 feed | 修正 transform 与 exclude |
| 无斜杠路径 307/404 不一致 | 在 CDN 层配置 301 |
| 首页堆满全部文章 | 限制为 1 + 6,其余进列表页 |
| robots 只有通配规则 | 显式声明允许 Bingbot |
| 内容仅 7 篇 | 扩充到 20 篇,删除零价值文章 |
七天执行计划
| 时间 | 动作 |
|---|---|
| 第 1 天 | 部署最新构建,配置 CDN 的 301 规则 |
| 第 2 天 | IndexNow 推送全部 URL,百度补推 |
| 第 3 天 | 三个搜索引擎后台确认 sitemap 状态与抓取错误 |
| 第 4 天 | 接入统计,观察是否有搜索词进入 |
| 第 5–7 天 | 新增 2 篇长尾内容,保持更新节奏 |
常见问题
Bing 的「抓取能力有限」会自己恢复吗?
会。随着内容增加、外链积累、站点被持续抓取,配额会逐步提升。但前提是你得持续供给新内容。
需要买外链吗?
不要。买来的链接大多会被识别并忽略,严重的会拖累整站。真实推荐型外链 10 条,效果远好于 100 条垃圾链接。
sitemap 提交后多久收录?
Bing 通过 IndexNow 几小时内可能开始抓取,正式收录视内容质量而定。百度通常更慢,新站要按周计。
为什么 Google 那边看起来正常?
Google 的抓取策略与 Bing 不同,且不参与 IndexNow。Bing 的数字通常更保守,两边不一致是正常现象。
页面数多少才够?
没有固定数字,但 20 篇以下基本吃不到稳定长尾流量。建议先把可索引页面做到 50 个以上,再谈优化。