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 是当天还剩多少配额。如果返回里出现不属于该站点的地址、或格式不合规的地址,会分别列在单独的字段里。

接口里的 token 是身份凭证。拿到它就能往你的账号配额里提交地址,所以不要写进公开的页面、仓库或截图里。放在服务器上单独的文件、权限收紧到只有自己能读,是更稳妥的做法。

五、坑:别把配额浪费在重复地址上

这类接口每天有配额上限,而且同一个地址反复提交没有任何额外收益,纯粹占额度。手动调用时很容易犯这个错:每次图省事,直接把整站地址全推一遍。

解决办法是记下交过什么。用一个文本文件存已提交的地址,每次提交前先做差集:

# 站内全部地址 减去 已提交记录 = 本次要提交的
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 是给爬虫的清单,放在根目录并保证可访问
  • 接口推送比后台手动提交反馈更及时,但要注意配额
  • 用记录文件做差集,避免重复提交浪费额度
  • 配合定时任务后,发文章这件事和提交这件事就解耦了
← 返回首页