基于Astro框架的博客网站添加Sitemap

安装 @astro/sitemap

先在 Astro 下安装官方 sitemap 包：

Copy
# Using NPM
npx astro add sitemap
# Using Yarn
yarn astro add sitemap
# Using PNPM
pnpm astro add sitemap

按 y 回车，astro 会自动修改你的配置文件astro.config.mjs添加 sitemap 打包功能。

最好自己再确认一下配置文件，如果文件中有以下代码就是配置成功了，没有的话就自己加一下：

Copy
import { defineConfig } from 'astro/config';
import sitemap from '@astrojs/sitemap';

export default defineConfig({
// ...
integrations: [sitemap()],
})

配置完成后打包，在根目录中会生成文件sitemap-0.xml，这个就是站点地图文件，提交给搜索引擎收录就可以了。

添加百度验证

说明： 网站地图的收录都需要进行站点验证。在百度搜索资源平台中添加自己的网站，验证流程参考这里站点验证图文详解。

勾选合适的站点属性。

选择文件验证，下载验证文件，放入网站的根目录即可。

打包部署之后，点击验证文件可以正常访问即可。

添加百度收录

在百度资源搜索平台 - 普通收录中的普通收录中填写网站的 sitemap 地址就可以了。

添加谷歌验证

参考Google 搜索中心文档地址。

提交站点地图方法：在浏览器或命令行中向此地址发送 GET 请求，并指定站点地图的完整网址。请确保站点地图文件可供访问：

Copy
https://www.google.com/ping?sitemap=FULL_URL_OF_SITEMAP # FULL_URL_OF_SITEMAP: 站点地图文件位置

比如我在浏览器中，直接输入下面链接访问：

Copy
https://www.google.com/ping?sitemap=https://cirry.cn/sitemap-0.xml

返回页面如下：

点击页面上的链接http://www.google.com/webmasters/tools/，跳转到谷歌Google Search Console

输入网站，验证网站

验证成功后，会弹出让你添加验证方法

可以选择下图的方法： 下载 html 文件，添加才网站的根目录下：

或者选择将下述请求头添加到网站的 head 中：

添加之后，在Google Search Console重新验证，看到下图就是添加完成了。

添加谷歌收录

在Google Search Console中的站点地图中填写网站的 sitemap 地址就可以了。

遇到的问题

正常操作完成之后，在百度搜索资源平台检测一下网站的Robots和抓取诊断是否可以正常使用。

就去百度普通收录里添加了站点的 sitemap，发现被百度收录失败了。

在抓取诊断中， 遇到了诊断报错提示，提示 robots 封禁， 我就去xml-sitemaps测一下看能不能扫描到我的站点。

发现这个网站也检测不到，那就是爬虫协议限制了，我就改了一下我的爬虫协议，修改之后的 robots.txt 如下：

Copy
User-agent: *
Allow: /
Sitemap: https://cirry.cn/sitemap-0.xml

修改完成后，记得在诊断报错的图中点一下报错，上报报错提示给百度。

过几分钟后，重新去xml-sitemaps上爬取成功了。在百度上重新提交一下也可以正常收录了。

注意：百度是不允许索引型 sitemap 的，所以@astro/sitemap打包生成的两个 sitemap 文件sitemap-0.xml和sitemap-index.xml，我们不要把sitemap-index.xml写入 robots.txt 文件中，否则百度还是会提示 Robots 封禁，导致爬取不到信息。

如果你们遇到了其他的问题可以参考抓取诊断工具常见错误类型解析。

可以通过如下命令检查是不是被 robots 封禁还是 ip 解析出错，如果返回 http 200 则代表正常，其他则是异常，记得替换最后的网站链接为自己的网站。

Copy
curl --head --user-agent 'Mozilla/5.0 (compatible; Baiduspider/2.0; +<http://www.baidu.com/search/spider.html)>' --request GET 'https://cirry.cn'