MkDocs 导航配置经验总结¶
创建时间: 2026-05-04
问题类型: 导航配置不完整
状态: ✅ 已修复并验证
📋 问题描述¶
现象¶
访问 http://101.132.106.49/protocol/ 时,页面只显示总线协议(AXI/APB/PCIe/DDR),没有显示无线协议(蓝牙、WiFi、4G/5G)。
用户反馈¶
"为啥 http://101.132.106.49/protocol/ 地址不能直接看到 4G5G-tutorials 呢?"
🔍 问题原因¶
根本原因¶
protocol/README.md 源文件内容不完整,只包含总线协议,没有无线协议的链接。
具体问题¶
为什么 MkDocs 构建时没有报错?¶
- MkDocs 只负责将 Markdown 转换为 HTML
- 它不会检查
README.md内容是否"完整" - 只要语法正确,就能成功构建
- 内容完整性需要人工检查
✅ 修复方案¶
步骤 1:更新 README.md¶
编辑 /home/admin/.openclaw/workspace/chip-project/docs/protocol/README.md:
步骤 2:重新构建 MkDocs¶
步骤 3:重启 Nginx¶
步骤 4:验证¶
🎯 验证结果¶
✅ 修复前¶
/protocol/ 页面只显示: - AXI、APB、PCIe、DDR(总线协议)
✅ 修复后¶
/protocol/ 页面显示: - 总线协议:AXI、APB、PCIe、DDR - 无线协议: - 蓝牙协议(8 个章节) - WiFi 协议(8 个章节) - 无线盲检(6 个章节) - 4G/5G 协议教程(12 个章节) - 协议对比表格
📝 经验教训¶
教训 1:README.md 内容需要人工审查¶
错误假设: "MkDocs 构建成功 = 内容完整"
实际情况: - MkDocs 只负责转换格式 - 不检查内容是否"完整"或"合理" - README.md 缺少的内容,构建后也会缺少
正确做法: - 构建前检查 README.md 内容 - 确认所有重要链接都已包含 - 构建后人工验证页面内容
教训 2:目录索引文件很重要¶
问题: protocol/README.md 是 /protocol/ 页面的内容来源
影响: - 如果 README.md 不完整,索引页面就不完整 - 即使子目录(bluetooth/、wifi/、4g5g-tutorials/)内容存在 - 用户从索引页面看不到这些内容的链接
正确做法: - 每个目录的 README.md 应该包含该目录所有重要内容的链接 - 使用清晰的分类(如"总线协议"、"无线协议") - 提供导航链接到子目录
教训 3:构建后需要验证内容¶
错误做法: "构建成功就认为没问题"
正确做法:
✅ 下次构建 MkDocs 时的检查清单¶
构建前检查¶
- 检查每个目录的 README.md 是否包含完整内容
- 确认所有重要子目录都在 README.md 中有链接
- 检查导航分类是否清晰(如"总线协议"vs"无线协议")
- 确认概述描述准确(不要只说"总线协议"如果还有无线协议)
构建后验证¶
- 检查生成的 HTML 文件是否包含预期关键词
- 测试远程访问是否正常
- 浏览器实际访问验证(最重要!)
- 检查索引页面是否显示所有重要内容
- 点击导航链接确认能正常跳转
具体内容检查¶
对于 protocol/README.md 这类索引文件:
- 是否包含所有子目录的链接?
- 分类是否清晰(总线协议、无线协议等)?
- 概述是否准确描述了包含的内容?
- 是否有对比表格或总结信息?
- 链接路径是否正确(相对路径)?
🔧 快速修复命令¶
📊 对比总结¶
| 项目 | 修复前 | 修复后 |
|---|---|---|
| README.md 概述 | "各种总线协议文档" | "各种协议文档,包括总线协议和无线通信协议" |
| 总线协议 | ✅ 4 个链接 | ✅ 4 个链接 |
| 蓝牙协议 | ❌ 无链接 | ✅ 8 个链接 |
| WiFi 协议 | ❌ 无链接 | ✅ 8 个链接 |
| 无线盲检 | ❌ 无链接 | ✅ 6 个链接 |
| 4G/5G 教程 | ❌ 无链接 | ✅ 12 个链接 |
| 协议对比 | 只有总线协议 | 总线协议 + 无线协议 |
记忆要点¶
下次构建 MkDocs 时记住:
- MkDocs 构建成功 ≠ 内容完整
-
构建只检查语法,不检查内容完整性
-
README.md 决定索引页面内容
- 索引页面显示什么,取决于 README.md 写什么
-
缺少的链接不会自动补充
-
构建后必须人工验证
- 用浏览器实际访问
- 检查所有重要内容是否显示
-
点击导航链接测试跳转
-
权限问题处理
- 构建前:
sudo chown -R admin:admin site/ - 构建后:
sudo chown -R nginx:nginx site/
本文档基于 2026-05-04 的实际问题编写