博客迁移说明(2023年中秋国庆)
本文记录/讨论&实践博客创建与长年维持过程
前后两个博客间链接(系统并行中….)
新博客地址: https://www.carlzeng.com 或 博客迁移说明(2023年中秋国庆)
旧 博客园:https://www.cnblogs.com/backuper/
新增域名: carlzeng.com (状态: 测试新的CDN, 陆续迁移中…)
20260411 更新博客园的模版到新版; 博客园 改版, 新版样式如下:

感谢 博客园个人博客申请教程,附自定义漂亮主页样式【详细教程–2024】
下一步: 定制后, 将文章的摘要截取文章关键内容, 而不是盲目的前面多少字符(刚好和Hexo的关键字重叠, 导致阅读目录快速浏览不友好); 搞清楚了来源的开源项目: https://www.yuque.com/awescnb 新模版tona-shadcn说明
该项目最新的日志: https://www.yuque.com/awescnb/pugltk/zf07h96fglxyg4dh
当前所处阶段: 新旧两个系统同时并行
博客园的优点很多,比如:SEO,对长时间历史的尊重,文章列表页面有点击量统计,
可评论,对天朝敏感词汇的过滤,合规性等等。
缺点也很多,比如:无法自定义的这些hexo优点的功能,便捷度,无法导出评论。
新的hexo优点很多,具体参加/搜索博客文章(标题:Hello Hexo)
缺点也很多,比如:维护的成本相对耗时
新旧两个系统同时并行自动化方案还没有实现。希望得高人指点
目前方案(平衡效率和耐心度):滞后性地,批量地,
把hexo中编写的新的文章(.md文件)拖放到博客园中
旧博客园的文章仅提供当时拖放(导入)的一个版本,不提供文章的后续版本更新
博客心路历程
写一遍心路历程,发布在两个blog,用于关联,衔接,和背景介绍
不知不觉已经写了15年多的博客文章,养成了随时记录随笔的习惯。我自己都很惊讶!
最早的初衷来源于TotemSuite公司老总的一句倡议:
我们每个人都要养成写个人技术博客的习惯….
(然后都链接到公司的网站上)
我要感谢这位老领导,我还要感谢博客园无偿为我服务了15年多,包容我的任性和随意性
(心情好+想起来+有时间+有内容等等叠加条件之后,
我登录博客园的管理地址,新建一篇随笔文章)
最近我慢慢感觉到时间的力量了,
另外一个事件是:搭建了软路由上的NAS(黑群晖),
然后找回并且合并了我从2004年开始记录拍摄的所有照片(包括数码相机,手机,电脑,监控等等)
借助NAS的应用,在时间轴上,我看到了:变化,感悟,感恩;
下一步我会单独写一篇分享关于个人NAS的文章,跑题太远了。
我会继续写下去,分享我的心路历程,一些人生境遇。
为什么要迁移?
博客园的文章编辑门槛太高了,与个人的编写习惯相悖,而且对于它的思路是相让用户不停的产生新的文章;
而我的习惯和思路是不停完善已有的文章(除非有很大的主题切换,有必要新起一篇文章的情况下)
旧的博客园,导入工具(导入.md文章)仅适用于导入新的文章;相同的标题也会判断为新的文章,这个很不友好。
具体迁移步骤,思路
找了很长时间关于如何把博客园中的写了15年的博客文章都迁移到hexo中来(任务始于Hello-hexo),
今天终于确认了 方案:
- 在博客园后台的 》”备份/导出“ 功能
把所有的博客文章都备份并下载XML(RSS),也就是说成了单个.xml的文件(我的300篇文章xml文件大小是4MB多) - 在hexo本地目录运行hexo的命令
- 安装:$ npm install hexo-migrator-rss –save
- 导入本地RSS文章:$ hexo migrate rss
获取了原博客的Meta信息:
日期
内容
格式
丢失了:
图片(链接防盗)
评论
文章点击量
hexo migrate rss 错误及解决方案
1 | ERROR |
两个博客间因为原博客标题转文件名后,文件名中的‘非法字符’导致hexo migrate rss [source]中部分文章出错,
解决方法很简单:
- 编辑/修改一下这个.md文件名, 去除那些保留字符
- 重新运行 hexo g 即可校验新的文件名是否符合hexo的命名规则(避坑即可)
截止2024年中已实现的计划
最新的hexo变动会统一更新在文章:Hello hexo
声明版权(加强版权保护)
- 本文章著作权归作者所有,任何形式的转载都请注明出处与原始链接。商业转载请联系作者获得授权,非商业转载请注明出处。
- 本博客所有文章除特别声明外,均遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
其他(测试进行中)
- SDN缓存方案
- 在配置文件中配置多个git源的deploy(发布)这样不同地区访问的速度能相对提升
如何启用carlzeng.com
不知如何设置, 添加了CDN中的域名, 可是泛域名证书好像不适于https://carlzeng.com
20241112 不知道为何被劫持到了旧的.top域名

修改 CNAME carlzeng.com bf3f8742.sycdn.xyz 仅 DNS 自动
修改证书 https://sycdn.xyz/servers/server/settings/https?serverId=119
免费证书 / [ “carlzeng.com”, “www.carlzeng.com“ ] / 有效至2025-02-10
等待半天后查看最新状况.
https://carlzeng.com/ 目前仍然被劫持(Firefox测试)
更新 https://app.netlify.com/sites/sage-halva-bac054/domain-management
域名, 指向正确www.carlzeng.com
netlify.carlzeng.top
sage-halva-bac054.netlify.app
更新的netlify的配置, 可能能半天以后 改善这种跳转.top?
20241115 通过 CloudFlare 为根域名添加 CNAME 记录
https://dash.cloudflare.com/5f90e9cc65dcc03033f9d9f958279c53/carlzeng.com/rules
终于生效了 https://carlzeng.com 解析正常
迁移Netlify到github.io到blogcdn.net
Netlify 是在北方快许多, 而且https://sage-halva-bac054.netlify.app/是全部飘绿色(速度快)

但是它指向的两个IP地址, 有一个在南方是无法访问的状态

1 | 无法访问: 75.2.60.5 |
没办法, 测试把www切换回github.io, 因为这个地址目前在南北方都正常能访问到.
Action:
修改了CNAME文件内容为: www.carlzeng.com
Hexo deploy, 验证是否已提交到github
Cloud flare 把www的主机CNAME, 指向chuanzhuo.github.io
验证访问www服务
第二天早上结果: 验证/测试失败.
无法从netlify(部分IP在南方挂) 切换到github
查到Github现在需要organzation, 才能新建domain
切换CNAME方案到: zr7mdvhu.cdn.blogcdn.net
20240804 切换www 的 CNAME方案到: zr7mdvhu.cdn.blogcdn.net
对比了一下 HK 和 JP 的服务器, 相对来说, 个人感觉JP的线路在我所能使用到的地方, 连通性更好, 待进一步观察/测试中…
新增Netlify(来自github.io)到sycdn.xyz
20241019 继续推进迁移工作
上传了 carlzeng.com 证书到NPM;
配置了: c.carlzeng.com, file.carzeng.com 的NPM 反向代理.
计划: 域名转入cloudflare
操作‘转移域’ https://dash.cloudflare.com/5f90e9cc65dcc03033f9d9f958279c53/domains/transfer
您当前没有可以转移的域。
以下域不能转移,原因如下:
carlzeng.com
此域在过去 60 天内进行过注册
2024年12月下旬, 等待转入cloudflare
同步发布到cnblogs
Typora-发布文章到博客园; 非常方便, 非常便捷, 非常高效发布第一个版本到cnblogs.com
通过Typora的导出功能, 一键上传到博客园

根据在Terminal下运行的失败, 修改python源代码:
python原来代码在MAC上更新
1 | import xmlrpc.client |
cnblogs.json
1 | { |
滑动滚动条到最底部,点击其它设置,开启“允许 MetaWeblog 博客客户端访问”
本小节来源: Typora-发布文章到博客园
原著笔名: Carl Zeng 《博客迁移说明(2023年中秋国庆)》
本文链接: https://chuanzhuo.github.io/blog/202310021555.html
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
CDN服务切入Clareflare(稳定性测试中….)
20260611初步测试成功, 部分子域名切换, 等待进一步稳定性和速度测试中…
1. 方案二:使用专属二级域名并开启“小黄云” (采用)
如果你的主域名 yourdomain.com 必须保持 DNS Only,你可以单独建立一个二级域名(例如 wp.yourdomain.com)专门给 WordPress 使用。
- 在 Cloudflare DNS 中,添加一条
CNAME或A 记录:名称填wp,指向你的服务器 IP。 - 唯独把这一个
wp的记录状态设置为 Proxied(金色小黄云)。 - 此时,你的主域名依然是 DNS Only 状态,不受任何影响。
- 针对
wp.yourdomain.com这一条记录,你就可以完美使用新版后台的 Origin Rules,将其目标端口重写为4443了。
方案三:使用 Cloudflare Tunnel(彻底抛弃公网端口)
如果你是因为不想在服务器防火墙上公开暴露端口,才想寻找重定向方案,那么 Cloudflare Tunnel(内网穿透) 是终极解法。 [1]
- 你的服务器上不需要在防火墙放行
4443端口,甚至服务器都不需要公网 IP。 - 在服务器上安装 Cloudflare 的轻量客户端
cloudflared。 - 客户端会在本地与 Cloudflare 总部建立一条加密的安全隧道(Outbound 隧道)。
- 你在 Cloudflare 控制台直接配置:将某个域名绑定到这个隧道,并指定流量发送到本机的
https://localhost:4443。 - 优点:不需要管 DNS 是不是 DNS Only,也不用暴露端口,极其安全,且完美享受 CDN 加速
方案二方案, 是否与我目前一条 A记录 *.yourdomain.com 冲突呢?
****是的,会有冲突****。如果存在冲突,Cloudflare 默认会优先采用哪一条规则,取决于你如何配置这条二级域名。
在 DNS 解析规则中,“精准匹配”的优先级永远高于“泛解析(\*)”。
以下是具体的冲突表现以及完美的解决办法:
. 冲突的表现形式
你现有的泛解析记录:
*.yourdomain.com-> 状态:DNS Only(灰色云朵)
如果你直接在外部访问 ://yourdomain.com,由于它命中了解析规则 *,它会继承泛解析的属性,也就是 DNS Only。这时候,它依然无法使用 CDN 和 Origin Rules(回源端口重写)。
\2. 完美的解决办法(覆盖泛解析)
你只需要在 Cloudflare DNS 记录中,手动添加一条一模一样的精准 A 记录(或 CNAME 记录):
- **类型 (Type)**:
A - **名称 (Name)**:
wp(或者你想要的任何二级域名) - IPv4 地址:你服务器的 IP
- 代理状态 (Proxy status):金色小黄云 (Proxied)
为什么这样可以解决?
当用户访问 ://yourdomain.com 时,Cloudflare 的 DNS 服务器会进行以下判断:
- 检查是否有精准匹配
wp的记录?有! - 此时,Cloudflare 会直接采用这条单独的
wp记录(金色小黄云),并完全忽略那条泛解析*记录。
结果与影响
- **对于
://yourdomain.com**:它成功开启了小黄云,你可以正常去新版后台设置 Origin Rules,将流量重定向到服务器的4443端口,CDN 也会完美生效。 - 对于其他二级域名(比如
://yourdomain.com、://yourdomain.com):它们依然会走*.yourdomain.com的泛解析规则,保持 DNS Only(灰色云朵) 状态,完全不受影响。
2. Rules.Origin Rules
如果你打算采用这个方案,你接下来需要:
- 在 DNS 中添加这条 开启小黄云的
wp记录。 - 前往 Rules -> Overview -> Origin Rules,为
://yourdomain.com创建一个端口重写到4443的规则。


访问后报错: The plain HTTP request was sent to HTTPS port
到 “The plain HTTP request was sent to HTTPS port”(普通 HTTP 请求被发送到了 HTTPS 端口)错误,说明你的 Cloudflare 正在使用未加密的 HTTP 协议去连接你服务器上那个已经强制开启了 SSL (HTTPS) 的 4443 端口。 [1, 2, 3, 4]
当你开启“小黄云”并使用 Origin Rules 强行将流量指定到 4443 端口时,Cloudflare 默认会把用户发来的协议(可能是 HTTP)原封不动或者降级回源。
请立即按照以下两步进行调整,即可完美解决该错误:
🛠️ 核心解决方案
第一步:修改 Cloudflare 的 SSL/TLS 加密模式(最关键 🔑)
这个报错 90% 的原因都是因为 Cloudflare 默认的 SSL 模式是 Flexible(灵活)。在这种模式下,无论用户用什么协议访问,Cloudflare 回源你服务器时永远使用 HTTP。当它用 HTTP 去敲你服务器的 4443 加密端口时,Nginx/Apache 就会直接抛出这个报错。 [1, 2, 3, 4, 5]
- 登录 Cloudflare 控制台。
- 在左侧菜单点击 SSL/TLS -> Overview(概述)。 [1, 2]
- 将加密模式从
Flexible修改为 Full(完全) 或者 Full (Strict)(完全-严格)。
第二步:检查并开启“始终使用 HTTPS” [1]
为了防止用户在浏览器由于误输入 http:// 导致协议不匹配,让 Cloudflare 在最外侧统一强制升级为 HTTPS: [1, 2]
- 在左侧菜单点击 SSL/TLS -> Edge Certificates(边缘证书)。
- 找到 Always Use HTTPS(始终使用 HTTPS) 选项,将其切换为 On(开启)。

20260612 bestbuy 切换到cloudflare CDN; 失败, 等待进一步测试
成功了, 原来是URL必须是携带参数的形式: https://bestbuy.carlzeng.com/#/10/detail