Starlight 自定义 404 页面配置实战:从 splash 模板到 hero 组件

发布时间:2026/9/25 10:53:02

Starlight 自定义 404 页面配置实战:从 splash 模板到 hero 组件 文档前端开发工具【免费下载链接】starlight Build beautiful, accessible, high-performance documentation websites with Astro项目地址https://gitcode.com/gh_mirrors/st/starlight点击查看免费下载导读本篇文章以 Starlight 官方文档仓库中真实存在的葡萄牙语版 404 页面 docs/src/content/docs/pt-br/404.md 为核心样本系统讲解在 Astro Starlight 文档站点中如何自定义页面未找到404页面。读完本文你将掌握 404 页面的自动生成机制、splash布局模板的作用、hero配置块的全部字段语义以及如何结合editUrl、lastUpdated和disable404Route等配置实现多语言站点下的友好 404 体验。一、从一个真实的 404 页面样本说起docs/src/content/docs/pt-br/404.md是 Starlight 官方文档站点的葡萄牙语巴西404 页面其完整内容如下--- title: Não encontrado template: splash editUrl: false lastUpdated: false hero: title: 404 tagline: strongHouston, temos um problema./strong Não conseguimos encontrar essa página.brVerifique a URL ou tente utilizar a barra de pesquisa. actions: - text: Ir para o início icon: right-arrow link: /pt-br/ variant: primary ---这段仅含 frontmatter 的文档页面没有任何正文 Markdown 内容因为它不需要正文——整页内容完全由 frontmatter 中的hero配置块驱动渲染。这实际上体现了 Starlight 文档站点的两个核心能力任意内容文件都可作为 404 页面只要文件名是404.md或404.mdxStarlight 就会自动将其注册为站点的 404 路由splash模板 hero配置可以完全脱离文档页的侧边栏、目录等布局用 hero 区块呈现一个独立、聚焦的错误提示页面。英文版对应文件为 docs/src/content/docs/404.md结构完全一致仅文案和链接不同链接指向/两份文件形成了多语言 404 的配对实现。二、404 路由是如何自动生成的在 Starlight 中404 页面并非需要手动在astro.config里声明路由而是由集成自动注入。在 packages/starlight/src/index.ts 中可以看到路由注入的核心逻辑if (!starlightConfig.disable404Route) { injectRoute({ pattern: 404, entrypoint: ... ? astrojs/starlight/routes/static/404.astro : astrojs/starlight/routes/ssr/404.astro, }); }也就是说当用户内容集合中存在404.md之类的文件时该文件会与注入的 404 路由模板相结合静态输出模式prerender true与 SSR 模式prerender false分别对应两个不同的路由实现packages/starlight/src/routes/static/404.astro声明export const prerender true在构建期生成404.html适用于纯静态部署packages/starlight/src/routes/ssr/404.astro声明export const prerender false在服务器端按需返回 404 响应适用于 SSR 部署packages/starlight/src/routes/ssr/index.astro 中同样会以new Response(null, { status: 404 })配合返回正确状态码。两者最终都渲染同一个 packages/starlight/src/routes/common.astro由它读取路由数据、渲染页面并包裹进Page组件中。因此你只需在内容目录中编写404.md剩下的路由与状态码处理都由框架完成。三、template: splash无侧边栏的宽版布局frontmatter 中的template字段决定页面布局风格。其取值在 packages/starlight/src/schema.ts 中定义template: z.enum([doc, splash]).default(doc),doc默认标准文档布局包含左侧导航侧边栏、右侧目录等splash宽版布局不渲染任何侧边栏适合首页、落地页或像 404 这样需要全屏聚焦的页面。splash模板对页面结构的影响在路由数据层就有体现。packages/starlight/src/utils/routing/data.ts 中hasSidebar: entry.data.template ! splash,template splash时hasSidebar为falsepackages/starlight/src/components/Page.astro 便不会渲染Sidebar slotsidebar /同时html:not([data-has-sidebar])会把内容区宽度从--sl-sidebar-width约束中释放出来扩大到67.5rem。这正是splash页面内容居中、无干扰视觉效果的来源。四、hero 配置块逐字段拆解hero是 frontmatter 中驱动页面首屏的核心配置其完整 schema 定义于 packages/starlight/src/schemas/hero.ts。对照pt-br/404.md的用法逐字段说明如下4.1title大标题title: 404类型可选字符串支持 HTML语义hero 区块的大号标题文字若不提供则回退使用页面顶层的title字段。这里显式给出404使页面核心视觉元素就是醒目的数字 404。4.2tagline副标题说明文字tagline: strongHouston, temos um problema./strong Não conseguimos encontrar essa página.brVerifique a URL ou tente utilizar a barra de pesquisa.类型可选字符串支持 HTML因此可以使用strong加粗关键词、br换行语义在标题下方以较小的字号显示的项目简介或提示文案。这里用一句休斯顿我们遇到问题了的幽默文案引导用户检查 URL 或使用搜索栏。在 packages/starlight/src/components/Hero.astro 的渲染逻辑中tagline通过set:html{tagline}注入 DOM字号由 CSSclamp(var(--sl-text-base), calc(0.0625rem 2vw), var(--sl-text-xl))控制颜色使用--sl-color-gray-2确保与当前主题色系统联动。4.3actions行动按钮组actions: - text: Ir para o início icon: right-arrow link: /pt-br/ variant: primaryactions是按钮数组每个按钮支持以下字段见 packages/starlight/src/schemas/hero.ts字段类型说明text字符串必填按钮上显示的文本link字符串必填按钮href值支持站内路径如/pt-br/或外部 URLvariantprimary/secondary/minimal按钮样式默认primaryicon内置图标名或内联svg显示在链接文字旁的图标本仓库中right-arrow是 Starlight 内置图标之一定义见 packages/starlight/src/components-internals/Icons.tsattrs对象附加到链接上的 HTML 属性如class、target等pt-br/404.md中配置的Ir para o início回到首页按钮使用primary强调样式 right-arrow图标指向葡萄牙语站点的首页/pt-br/——注意多语言站点中链接必须带上语言前缀而英文版 404 的对应配置则指向/。4.4 hero 渲染细节Hero.astro 完整演示了 hero 的渲染管线支持image字段file相对路径、dark/light双主题图片或html原始 HTML 三种形式404 页面未使用标题渲染为带idmain-content语义的h1对应常量PAGE_TITLE_ID保证可访问性锚点按钮渲染复用LinkButton组件桌面端min-width: 50rem采用7fr 4fr双栏网格移动端单栏居中——这些响应式规则都定义在Hero.astro内联样式层starlight.core中。五、editUrl: false与lastUpdated: false的含义frontmatter 中这两行同样有明确语义editUrl: false关闭本页的编辑此页链接。404 页面本质是错误提示页指向源码编辑链接没有意义因此显式禁用。字段定义见 packages/starlight/src/schema.ts 中的editUrl: z.union([z.url(), z.boolean()]).optional().default(true)——默认为true继承全局editLink.baseUrl配置传false可逐页关闭。lastUpdated: false关闭本页的最后更新时间显示。同理错误页不应展示时间戳。这两个字段展示了 Starlight 的全局配置可被页面级 frontmatter 覆盖的设计原则全局开启的能力可以在任意单页上按需关闭。六、多语言站点的 404回退与翻译系统Starlight 的多语言站点中每个语言目录都可放置自己的404.md。若某个语言没有提供框架还有一层内置兜底各语言翻译文件如 packages/starlight/src/translations/en.json、packages/starlight/src/translations/pt.json中的404.text键定义了默认 404 提示文案该键在 packages/starlight/src/schemas/i18n.ts 中声明并在 packages/starlight/src/global.ts 中通过Astro.locals.t(404.text)暴露给全局模板。因此自定义 404 页面的推荐做法是优先用hero块构建品牌化的 404 体验如本样本所示把翻译系统保留为未覆盖语言时的兜底方案。七、扩展如何完全关闭内置 404 路由如果你希望完全接管 404 处理例如在边缘层自定义可以在astro.config.mjs的 Starlight 配置中设置starlight({ title: My Docs, disable404Route: true, // ... })当disable404Route为true时packages/starlight/src/index.ts 中的injectRoute注入逻辑会被跳过不再生成内置 404 页面。反之默认情况只要你的内容集合里存在404.md它就自动成为站点 404 页。八、实践要点小结对照pt-br/404.md这个真实样本自定义 Starlight 404 页面时可以沉淀以下经验文件命名与位置在每个语言目录下放置404.md如docs/src/content/docs/pt-br/404.md无需手动配置路由布局选择template: splash去掉侧边栏让错误提示更聚焦需要标准文档布局时保留默认doc内容即配置整个页面通过hero.title、hero.tagline、hero.actions驱动无需撰写正文 Markdown回链要带语言前缀多语言站点中按钮link指向对应语言首页如/pt-br/英文根站则指向/关闭无意义的 UIeditUrl: false、lastUpdated: false避免在错误页出现编辑链接与时间戳兜底机制未提供 404 文档的语言会自动回退到翻译文件中的404.text默认文案。相关实现与配置文件的完整路径索引index.ts404 路由注入、static/404.astro 与 ssr/404.astro双模式路由、schema.tstemplate/editUrl/lastUpdated字段定义、hero.tshero 完整 schema、Hero.astro渲染实现、Page.astrosplash 布局影响与 404 页面的 pagefind 排除逻辑。赞分享文档前端开发工具【免费下载链接】starlight Build beautiful, accessible, high-performance documentation websites with Astro项目地址https://gitcode.com/gh_mirrors/st/starlight点击查看免费下载相关推荐2019 年 GraphiQL 第二次工作组会议议程解析插件系统、可复用 UI 包与 LSP/编辑器技术选型的历史起点2019 年 GraphiQL 第二次工作组会议议程解析插件系统、可复用 UI 包与 LSP/编辑器技术选型的历史起点 本文围绕 working group/文档前端开发工具Starlight 404 页面定制指南用 splash 模板与 hero 构建多语言错误页Starlight 404 页面定制指南用 splash 模板与 hero 构建多语言错误页 本篇技术指南以 Starlight 官方文档站中 印地语 404文档前端开发工具Iosevka 25.1.0 发布说明深度解析新增字符、字符变体覆盖扩展与风格集赋值修复Iosevka 25.1.0 发布说明深度解析新增字符、字符变体覆盖扩展与风格集赋值修复 Iosevka 是一款由代码编写的代码字体Versatile文档前端开发工具上一篇从部署到跑通 RAG 问答与知识图谱Yuxi 多租户智能体平台完整指南下一篇AutoCAD字体管家三步搞定字体缺失设计效率提升300%创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/25 11:43:04

智谱唐杰清华开课:大模型全链路实操从数据到部署

1. 这门课到底在教什么:从标题拆解真实意图先把标题拆开看。“智谱唐杰清华开课”,主语是智谱和唐杰,场景是清华的课堂,动作是“开课”。“爆改课程内容”说明这不是照本宣科的老课件,而是把原有课程结构推倒重来。“让…

2026/9/25 11:43:04

DeepSeek MoE架构与长上下文部署实战:从原理到工程踩坑

1. 为什么DeepSeek值得单独拎出来讲第一次把DeepSeek的权重文件拖到本地跑起来的时候,我盯着显存占用曲线看了很久。同样参数规模的稠密模型,显存早就爆了,而它还能留出余量给长上下文。这个反差让我意识到,MoE加长上下文这套组合…

2026/9/25 11:43:04

OpenCode多模型接入:DeepSeek与Muse Spark性价比验证

近期的 AI 编码工具社区里,经常能看到这样的标题:“无限额度?超越 DeepSeek 的性能和性价比!Muse Spark 上线 opencode,gpt5.6sol 半价!”。先说结论:这类说法里有真实的工具趋势,也…

2026/9/25 11:43:04

每日更新ArXiv CV论文:自动化抓取、过滤与推送实战

1. 这个每日更新项目到底在做什么每天早上八点半,我习惯性地打开终端,先跑一遍当天的ArXiv CV板块抓取脚本,把新挂出来的论文标题、摘要、作者和PDF链接拉下来,筛掉那些明显灌水的,再把真正有意思的十几篇整理成一份清…

2026/9/25 11:43:04

钢板表面缺陷检测数据集:划伤/孔洞/焊缝三类YOLO-ready资源

简介:本资源是一份面向工业视觉检测领域的钢板表面缺陷数据集,专为缺陷检测与目标检测算法研发、模型训练及课程实验设计,适用于计算机视觉初学者与工程实践者。数据集融合铝型材与德国DAGM两大公开数据集,聚焦划伤、孔洞、焊缝三…

2026/9/24 20:24:47

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/25 0:02:35

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:02:35

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:02:35

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑