Algolia搜索不到文章
在通过algolia添加搜索功能后,会发现有的网页,明明存在,但是搜索不到。
排查问题
进入https://dashboard.algolia.com/
打开crawler,进入之前创建的爬虫,查看我们爬取的网页信息。

会发现Monitoring会存在部分被忽略的网站,而那些失败的网站,刚好是无法被搜索到的。
原因在在于这里,根据信息可以推断是由于“末尾斜杠(Trailing Slash)”引起的 301 重定向问题
Ignored
fetchHTTP redirect (301, 302)26
Ignored
fetchHTTP Not Found (404)13
这里图片是我已经处理好的,显示全部成功

Algolia 爬虫尝试抓取
.../intro,但服务器(GitHub Pages)告诉它:“这个页面已经永久移动到了.../intro/”。 大多数爬虫配置为了防止死循环或索引混乱,默认会忽略重定向页面。因为重定向页面本身不包含内容(只有 162 字节的跳转指令),真正的文章内容在带斜杠的那个 URL 里
为什么会产生重定向?
这通常是由 Docusaurus 的配置与 GitHub Pages 的默认行为不一致导致的。 在 Docusaurus 中,有一个关键配置项 trailingSlash。
- 如果
trailingSlash: true,生成的 URL 会以/结尾。 - 如果
trailingSlash: false,生成的 URL 不带斜杠。 - GitHub Pages 的行为: 它通常会自动在目录名称后添加斜杠。如果你的配置与服务器行为冲突,就会产生 301 重定向。
解决方法
修改 Docusaurus 配置
在 docusaurus.config.ts 中,显式指定 trailingSlash。对于 GitHub Pages,建议设置为 undefined 或 true(这取决于你希望 URL 的外观,但显式指定能减少重定向)。
const config: Config = {
// ... 其他配置
url: 'https://arkoco.github.io',
baseUrl: '/',
trailingSlash: false, // 或者设置为 true,建议先尝试 false
// ...
};
补充
sitemap.xml文件说明
简单来说,Sitemap(站点地图) 就像是网站的“导游手册”或“目录索引”。
它是一个特殊的 .xml 格式文件,里面列出了你网站上所有重要的页面链接(URL),以及这些页面的元数据(比如最后更新时间、更新频率等)。
搜索引擎(如 Google、Bing、百度)和搜索服务(如 Algolia)是通过名为“爬虫”(Crawler/Spider)的程序来发现网站内容的。
- 如果没有 Sitemap: 爬虫只能像走迷宫一样,通过点击页面上的一个又一个链接来发现新页面。如果某个页面没有被任何其他页面链接,爬虫可能永远找不到它。
- 有了 Sitemap: 你直接给了爬虫一张“全家福”清单。爬虫一进站,先看
sitemap.xml,就能立刻知道:“哦,这个站有 50 篇文章,我得全抓走。”
Sitemap 格式
在你 Docusaurus 项目构建后(执行 npm run build),会在 build 文件夹下生成一个 sitemap.xml。它的结构大致如下:
XML
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://arkoco.github.io/docs/front/intro</loc>
<lastmod>2026-03-15</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
<loc>:页面的绝对路径(这是最重要的)。<lastmod>:最后修改日期(告诉爬虫这个页面是否更新过,需不需要重新抓)。<priority>:相对于站内其他页面的优先级。
和 Algolia 问题的关系
Algolia 的爬虫也是根据这张“清单”干活的。
- URL 格式不一致:如果你的
sitemap.xml里写的地址是.../intro,但服务器强制跳转到.../intro/(多了个斜杠),爬虫就会觉得你在“溜”它,从而报错并忽略该页面。 - 内容缺失:如果某篇文章没出现在
sitemap.xml里,Algolia 的搜索框就搜不到它。
Docusaurus 中如何管理
Docusaurus 默认会自动帮你生成 Sitemap。你可以在 docusaurus.config.ts 中微调它:
presets: [
[
'classic',
{
sitemap: {
lastmod: 'date',
changefreq: 'weekly',
priority: 0.5,
ignorePatterns: ['/tags/**'], // 忽略不需要搜索的路径
filename: 'sitemap.xml',
},
// ...
},
],
],
验证方法
可以直接在浏览器访问网站地址:https://arkoco.github.io/sitemap.xml。
如果能够看到一堆代码链接,如下就是对应的站点地图文件
