2026-10-22
让新站被搜索引擎收录:robots、sitemap 与自动提交
站点能打开了,但打开和能被搜到是两件事。搜索引擎不会自己发现一个新域名,得先把路铺好,再主动告诉它。这篇记录从检查抓取权限、写站点地图,到用接口自动推送的完整过程。
一、先确认没有挡路的东西
在考虑提交之前,先排除掉那些「明明收录不了,却以为是搜索引擎慢」的情况。三件事要确认:
- 页面头部有没有
noindex这类禁止收录的标签 robots.txt是否把爬虫挡在外面(没有这个文件等于默认全站允许)- 域名用
https访问是否正常返回200
grep -ril "noindex" /var/www/你的站点目录
curl -I https://你的域名/
另外页面要有 title 和 description,这是搜索结果里显示的标题和摘要。没有 description 不会导致不收录,但搜索结果会很难看。
二、写一份站点地图
站点地图就是告诉爬虫「这个站有哪些页面」的清单,一页 XML 就够:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://你的域名/</loc><lastmod>2026-10-22</lastmod></url>
<url><loc>https://你的域名/posts/first.html</loc><lastmod>2026-10-22</lastmod></url>
</urlset>
放在站点根目录,然后让它可访问:https://你的域名/sitemap.xml 返回 200 即可。
三、让 robots.txt 指过去
只有两行有意义的内容,但能让爬虫顺着找到地图:
User-agent: *
Allow: /
Sitemap: https://你的域名/sitemap.xml
四、用接口主动推送
站长平台一般提供两种方式:一是在后台手动提交站点地图,二是通过接口直接推送单个地址。后者的反馈更即时,适合配合脚本用。
接口形式很简单——一个 POST 请求,内容是每行一个完整地址:
curl -H 'Content-Type:text/plain' \
--data-binary $'https://你的域名/\nhttps://你的域名/posts/first.html' \
'http://接口地址/urls?site=https://你的域名&token=你的凭证'
返回通常是这样的 JSON:
{"remain":7,"success":3}
success 是本次成功接收的条数,remain 是当天还剩多少配额。如果返回里出现不属于该站点的地址、或格式不合规的地址,会分别列在单独的字段里。
五、坑:别把配额浪费在重复地址上
这类接口每天有配额上限,而且同一个地址反复提交没有任何额外收益,纯粹占额度。手动调用时很容易犯这个错:每次图省事,直接把整站地址全推一遍。
解决办法是记下交过什么。用一个文本文件存已提交的地址,每次提交前先做差集:
# 站内全部地址 减去 已提交记录 = 本次要提交的
comm -23 <(printf '%s\n' "${ALL[@]}" | sort -u) \
<(sort -u 已提交记录.txt)
六、做成定时任务
把上面几步串成一个脚本,逻辑是:扫描站内所有页面 → 重建站点地图 → 与记录做差集 → 有新增就提交 → 把成功的写入记录。
关键点是没有新页面时直接退出,不调用接口,这样定时任务跑得再勤也不会消耗配额:
if [ ${#PENDING[@]} -eq 0 ]; then
echo "没有未提交的新地址"
exit 0
fi
然后交给 cron 每天跑一次:
# /etc/cron.d/site-push
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 3 * * * root /usr/local/bin/site-push >> /var/log/site-push.log 2>&1
这样日常流程就变成:写完文章放进目录,剩下的等它自己跑。想立刻提交就手动执行一次同一个脚本。
七、现实预期
- 提交成功不等于被收录。提交只是进了待抓取队列,抓不抓、什么时候抓、抓了放不放出来,都由搜索引擎自己调度
- 新域名、没有外链、没有历史权重,首次收录通常要几周,急不来
- 可以去站长平台的「抓取诊断」看看它到底有没有抓、返回什么状态码
- 想快一点,比较有效的是持续更新内容,以及让别的站挂个链接过来
小结
- 先排除
noindex、robots拦截这类「假性收录失败」 sitemap.xml是给爬虫的清单,放在根目录并保证可访问- 接口推送比后台手动提交反馈更及时,但要注意配额
- 用记录文件做差集,避免重复提交浪费额度
- 配合定时任务后,发文章这件事和提交这件事就解耦了