跳到主要内容

Algolia搜索不到文章

在通过algolia添加搜索功能后,会发现有的网页,明明存在,但是搜索不到。

image-20260315225240004

排查问题​

进入https://dashboard.algolia.com/

打开crawler,进入之前创建的爬虫,查看我们爬取的网页信息。

image-20260315224500056

会发现Monitoring会存在部分被忽略的网站,而那些失败的网站,刚好是无法被搜索到的。

原因在在于这里,根据信息可以推断是由于“末尾斜杠(Trailing Slash)”引起的 301 重定向问题

Ignored

fetchHTTP redirect (301, 302)26

Ignored

fetchHTTP Not Found (404)13

这里图片是我已经处理好的,显示全部成功

image-20260315224643960

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。

如果能够看到一堆代码链接,如下就是对应的站点地图文件

image-20260315230343994