通过多站点方式另类解决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!
评论