新文章怎么让搜索引擎收录:我把四个推送接口都敲了一遍

经验 2026-10-13 20:03 · 29 次阅读 ·Sitemap,IndexNow,收录,搜索引擎,实测

搜索引擎不会自己发现我的新文章。我上周发的那篇,看访问记录没有一条是从搜索来的。查完才发现:文章入库了、站点地图也自动生成了,但没人告诉搜索引擎「有新东西」。现在我发完文章会多做一步,一分钟推一次。

四个接口今天的实测结果

背景:三个老办法都不通了

以前发完站有个习惯动作:把站点地图的地址 ping 给搜索引擎,等于给图书馆寄一张新书目录。

我按记忆里的三个地址各敲了一次 curl,都不通:

接口 返回 意思
必应老地址 410 这个地址永久没了
百度老地址 404 查不到这个页面
谷歌老地址 连不上 curl 返回 000,是没连上,不是状态码

410 和 404 是对方服务器回的话,不是我猜的。谷歌那条我只拿到「没连上」,所以不算数。

做法:让清单自己长出来,再找一条能敲的门

站点地图不手写,让程序现生成。 我没存一个 sitemap.xml 文件,而是在站里加了一个地址,谁访问就现查数据库拼出来。文章一入库,清单里立刻就有它。

我推的时候,这份清单是 30 条网址、5081 字节,取一次 63 毫秒(快到感觉不到)。

每条的 lastmod(更新时间)直接读数据库里的时间戳,不写死。最新那篇是 10 月 9 日更新的,清单里就写着 2026-10-09,对得上。手写清单的问题是你会忘,忘一次就少让搜索引擎看见一篇。

说明书里指路,而且别自相矛盾。 robots.txt 是放在网站根目录的「给爬虫看的说明书」,末尾加一行 Sitemap 的地址,爬虫来一次就知道清单在哪。

这里我踩了个坑:我写了「不许抓 /uploads/ 目录」,但几张要公开的报告页面恰好就放在这个目录下面。结果清单里列了它、说明书里又禁了它,自己打自己。改法是给每张要公开的报告单独加一行 Allow(放行)。现在是整体挡、例外放行,两边一一对得上。

主动推,只剩 IndexNow 这条路。 IndexNow 是必应、Yandex、Seznam 合用的一个收稿口,免费、不用注册。前提是你要在网站根目录放一个文本文件:文件名就是一串你自己指定的验证码(key),内容是这串验证码本身,用来证明域名是你的。我这份文件 32 个字符,访问它能正常打开(HTTP 200)。

推送就是往那个地址发一条消息:

curl -s -o /dev/null -w "%{http_code}\n" \
  -X POST https://api.indexnow.org/indexnow \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{"host":"你的域名","key":"你的key",
       "keyLocation":"https://你的域名/你的key.txt",
       "urlList":["https://你的域名/新文章地址"]}'

对方回了 200(表示收到),耗时 1.99 秒。脚本不带参数跑,就是把清单里所有网址一次全推。

结论与踩坑

1. 202 不等于成功。 我故意写了个不存在的验证码再推一次,返回的是 202,不是拒绝。202 的意思是「收到了,排队处理」——它还没去核对你那个文件在不在。所以别看到有回应就当完事,隔天自己搜一下。

2. 只能推自己的域名。 我拿 example.com 试了一次,当场被拒:HTTP 422,原话是 "One or more URLs are not related to your verified domain. Please verify URLs before submitting.",翻译过来是「这些网址跟你验证过的域名没关系」。

3. 百度、搜狗、360 没有这种免费口子。 它们只认自家站长平台,要本人实名账号登录提交,别人替代不了,这一步得站主自己做。

4. 加了新的根路径,别忘前面那一层。 清单和说明书都是在网站根目录新加的地址。我第一版在本机测通了,线上却 404 —— 因为请求先经过前面的反向代理(Caddy),代理里没登记这两个新地址,就当文件不存在直接返回 404。改完配置要看一次真机结果,别只看自己的配置文件。

以后发文章我就固定三步:入库、打开站点地图看一眼新文章在不在、跑一次推送。加起来不到两分钟。

继续看

全部 →