博客系统自文档 · 附录 B / 19 篇
目录 · 上一篇:互动与社区(评论/留言/收藏) · 下一篇:支付、邮件与运营支撑
写在前面
第 02 篇介绍了路由级「发现」;本篇专门讲 搜索引擎与订阅器 如何抓取你的站,以及 搜索页 的技术路径。
范围说明:SSR、RSS、sitemap、JSON-LD 均在 blog-home-nuxt 实现;uni-app 小程序/H5 不走同一套 SEO 管线,公开收录以 Web 为准。
功能与体验
| 能力 | URL | 面向谁 |
|---|---|---|
| 站内搜索 | /search?q= |
读者 |
| RSS | /feed.xml |
订阅器、部分爬虫 |
| Sitemap | /sitemap.xml |
Google/Bing |
| 结构化数据 | 详情页 <script type="application/ld+json"> |
搜索引擎富摘要 |
| Canonical | 详情页 <link rel="canonical"> |
防重复收录 |
| 用户公开主页 | /user/[uid] |
排行榜用户 + sitemap |
2026 详情页 SEO 组件
ArticleShareBar— 分享传播ArticleRelated— 内链增加爬取深度- 同作者 prev/next — 串联专栏 URL
设计与实现
三条发现通道对比
| 通道 | 实现位置 | 数据源 | 更新频率 |
|---|---|---|---|
| RSS | Nitro server/routes/feed.xml.ts |
POST /article/list 50 篇 |
实时请求 |
| Sitemap | @nuxtjs/sitemap + server/api/__sitemap__/urls.ts |
500 篇文章 + Top50 排行榜用户 | 每次生产 build |
| 搜索 | Home /search |
POST /article/list 带 keyword |
实时 |
RSS(运行时)
typescript
// feed.xml.ts 核心:直连 Nest API
const apiPrefix = process.env.VITE_NUXT_API_PREFIX || '/x-blog/api/v1';
$fetch(`${origin}${apiPrefix}/article/list`, { method: 'POST', body: { page: 1, pageSize: 50, client: true } })
// 响应:res.data.list(TransformInterceptor 包装)
RSS 由 Nitro 路由提供 XML,数据请求直达 /x-blog/api/v1/article/list(Nginx → Nest)。
Sitemap(构建时 + 动态源)
配置于 nuxt.config.ts:
typescript
sitemap: {
sources: ['/api/__sitemap__/urls'],
}
server/api/__sitemap__/urls.ts 在生成 sitemap 时:
POST /article/list(pageSize 500)→/detail/{id}GET /rpg/leaderboard?type=exp&limit=50&period=total→/user/{uid}(去重)
注意:dev 环境行为与生产 build 不同;发版后新文章/新上榜用户需 rebuild Nuxt 才会进 sitemap(RSS 无需 rebuild)。
JSON-LD / canonical
pages/detail/[id].vue 内 useHead 注入:
BlogPosting或等效 schema(标题、描述、时间)canonical指向规范 URL
搜索
- 前端
/search统一入口(2026-06 三批) - 后端
article/list带 keyword 条件(标题/内容模糊) - 公开接口,需 RBAC
isPublic=1 - uni-app
/pages/search/search调同一 API,不参与 sitemap
踩坑与取舍
- Sitemap 与 RSS 不同步策略:RSS 实时、sitemap 随 build — 新文上线后若重视 SEO,记得 Home rebuild。
- feed.xml 与 sitemap 域名:生产
siteOrigin配置需与 canonical 一致。 - SSR 保留文章列表 HTML(第 14 篇):爬虫仍能看到首页/列表骨架。
- 小程序 SEO:微信搜一搜依赖小程序自身配置,与 Web sitemap 无关。
系列导航
- 目录:博客系统分类
- 上一篇:16 互动与社区(评论/留言/收藏)
- 下一篇:18 支付、邮件与运营支撑
- 导读:导读 · 第 0 篇
延伸阅读
blog-home-nuxt/server/api/__sitemap__/urls.tsblog-home-nuxt/server/routes/feed.xml.tsblog-home-nuxt/nuxt.config.ts(sitemap 配置)

全部评论(4)