主 题
博客系统自文档 · 附录 B / 19 篇
目录 · 上一篇:互动与社区(评论/留言/收藏) · 下一篇:支付、邮件与运营支撑
写在前面
第 02 篇介绍了路由级「发现」;本篇专门讲 搜索引擎与订阅器 如何抓取你的站,以及 搜索页 的技术路径。
功能与体验
| 能力 | URL | 面向谁 |
|---|---|---|
| 站内搜索 | /search?q= |
读者 |
| RSS | /feed.xml |
订阅器、部分爬虫 |
| Sitemap | /sitemap.xml(构建产物) |
Google/Bing |
| 结构化数据 | 详情页 <script type="application/ld+json"> |
搜索引擎富摘要 |
| Canonical | 详情页 <link rel="canonical"> |
防重复收录 |
2026 详情页 SEO 组件
ArticleShareBar— 分享传播ArticleRelated— 内链增加爬取深度- 同作者 prev/next — 串联专栏 URL
设计与实现
三条发现通道对比
| 通道 | 实现位置 | 数据源 | 更新频率 |
|---|---|---|---|
| RSS | Nitro server/routes/feed.xml.ts |
POST /article/list 50 篇 |
实时请求 |
| Sitemap | Nuxt 模块 modules/sitemap.ts |
build 时拉 500 篇 id + 静态路由 | 每次生产 build |
| 搜索 | Home /search |
POST /article/list 带 keyword |
实时 |
RSS(运行时)
typescript
// feed.xml.ts 核心:同源调 list API
$fetch(`${origin}/api/article/list`, { body: { page: 1, pageSize: 50, client: true } })
RSS 与浏览器 API 同域,走 Nginx → Nuxt → 内部转发 Nest。
Sitemap(构建时)
modules/sitemap.ts 在 pages:extend hook:
- 生产 build 时请求
https://jiang-xia.top/x-blog/api/v1/article/list(pageSize 500) - 合并无动态参数的静态
pages路径 - 写入
.cache/.sitemap/sitemap.xml并挂到 Nitro publicAssets
注意:dev 环境跳过;发版后新文章需 rebuild Nuxt 才会进 sitemap(RSS 无需 rebuild)。
JSON-LD / canonical
pages/detail/[id].vue 内 useHead 注入:
BlogPosting或等效 schema(标题、描述、时间)canonical指向规范 URL
利于搜索结果显示日期、站点名。
搜索
- 前端
/search统一入口(2026-06 三批) - 后端
article/list或专用 search 条件(标题/内容模糊) - 公开接口,需 RBAC
isPublic=1
踩坑与取舍
- Sitemap 与 RSS 不同步策略:RSS 实时、sitemap 随 build — 新文上线后若重视 SEO,记得 Home rebuild。
- feed.xml 与 sitemap 域名:生产
siteOrigin配置需与 canonical 一致。 - SSR 保留文章列表 HTML(第 14 篇):爬虫仍能看到首页/列表骨架。
系列导航
- 导读 · 第 0 篇
- 相关:第 02 篇、第 14 篇
延伸阅读
blog-home-nuxt/modules/sitemap.tsblog-home-nuxt/server/routes/feed.xml.ts

全部评论(0)