通过多站点方式另类解决Hexo多国语言问题
1、期望目标
- 解决多语言博客问题
- 现在有几个问题,butterfly 主题支持 3 种语言,但是发现 tags 和 archive 显示有问题
- 具体来说就是虽然是 ja,但是显示的还是中文,只有 post 的内容是 ja 的
- 另外是希望每个页面都只有当前国家语言的 tags 和categories
- 目前的几个插件都是全局的
2、计划思考
解决方案:
- 修改 butterfly 代码,但是升级会比较麻烦
- 另外自己写插件,可以,但是调整起来问题比较多
- 最后想了个办法,就是一个语言一个站点
- 这样一来解决了筛选的问题,就是生成 tags 和categories
- 但是这样一来还有个 sitemap 的问题,后来通过 sitemap index 解决了
3、操作步骤
3.1、默认语言可以简化,而且可以大大简化
graph TB
A[GitHub 仓库] -->|部署| B[xxx.com]
A -->|部署| C[lang.xxx.com]
B -->|默认语言| D[xxx.com/sitemap.xml]
C -->|其他语言| E[lang.xxx.com/sitemap.xml]
F[Cloudflare Worker] -->|生成| G[动态站点地图索引]
H[用户/搜索引擎] -->|请求| F
F -->|提供| H
D -.->|被引用| G
E -.->|被引用| G
3.2、生成多语言博客
graph TD
A[开始部署] --> B{是默认语言吗?}
B -->|是| C[处理默认语言]
B -->|否| D[处理其他语言]
C --> E[生成默认站点地图]
D --> F[生成多语言站点地图]
E --> G[部署到 xxx.com]
F --> H[部署到 lang.xxx.com]
G --> I[更新 xxx.com/sitemap.xml]
H --> J[更新 lang.xxx.com/sitemap.xml]
I --> K[结束部署]
J --> K
3.3、CloudFlare Worker 处理
sequenceDiagram
participant U as 用户/搜索引擎
participant W as Cloudflare Worker
participant M as 主站点 (xxx.com)
participant L as 语言站点 (lang.xxx.com)
U->>W: 请求 sitemap.xml
W->>W: 生成动态站点地图索引
W-->>U: 返回站点地图索引
U->>M: 请求 xxx.com/sitemap.xml
M-->>U: 返回默认语言站点地图
U->>L: 请求 lang.xxx.com/sitemap.xml
L-->>U: 返回多语言站点地图
他的作用是从外面引入,变成 sitemap index
3.4、合并sitemap
最后合并
graph LR
A[GitHub 中的内容] -->|部署| B[默认语言内容]
A -->|部署| C[其他语言内容]
B -->|生成| D[默认站点地图]
C -->|生成| E[多语言站点地图]
D -->|引用| F[Cloudflare Worker]
E -->|引用| F
F -->|生成| G[动态站点地图索引]
G -->|提供| H[用户/搜索引擎]
H -->|爬取| B
H -->|爬取| C
4、总结
办法总比困难多,相对来说麻烦点,好在最后还是解决了这个问题了
5、异常记录
如果有兴趣深入了解,留言继续完善
1 | permalink: posts/:abbrlink.html |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The IT Explorer!
评论