本博客前面的博文中曾写过动态博客转入静态博客的部分问题。今天在测试时,又发现了一个新问题,在此简单叙述问题的情况和解决方法。

转入静态博客的方法

万能的WordPress有合适的插件提供了简便的方法。

如果原来的动态博客程序不是WordPress,需要先转入WordPress进行操作。以typecho为例,typecho的“TypExport”插件具有将所有博文、页面、评论等内容转入WordPress的功能。除了“more”标签以外,其他均可无缝转移。将TypExport插件导出的xml文件导入WordPress即可。这里面可能会涉及到附件的转存,需要修改一下xml文件的内容。使用文本编辑器打开xml文件,将/usr/uploads替换成/wp-content/uploads。再将uploads下的内容拷贝到WordPress后台。

在WordPress安装“Jekyll Exporter”插件。然后,在WordPress后台左侧的“工具”——“Export to Jekyll”,此时浏览器会下载一个压缩包。打开压缩包,在压缩包的根目录有一些文件和文件夹,结构如下:

_drafts:草稿
_posts:博文
wp-content:附件目录
***.md:页面
_config.yml:Jekyll配置文件

以Hexo为例:

(1)将_posts下的md转移到source/_posts下;

(2)在source目录下,根据压缩包根目录下md文档的名字,创建同名文件夹,再将压缩包根目录下的md文档转移到相应文件夹下,然后将文件名改为index.md;

(3)将wp-content文件夹转移到source目录下,不要做任何改动;

(4)打开Hexo的总配置文件,将new_post_name设置为:year-:month-:day-:title.md

(5)为保证以后写的新文章的链接与之前保持一致,将Hexo总配置文件URL选项下面的permalink设置为 archives/:title.html

将这些文件上传到支持在线编译功能的托管平台,如Gitlab、Coding;或者利用Netlify进行编译,可以托管到Github、Gitlab、Bitbucket。具体上传方法,可以利用Gitlab、Github、Coding的网页端的批量在线上传功能(文件夹可在对应的网页进行在线创建,然后在文件夹下批量上传文件);或者利用Git命令。静态博客搭建方法可查看这篇文章(点击查看)

这样便迁移成功了。评论迁移问题可查阅本博客的这篇文章(点击查看)中关于评论导入disqus的部分。

永久链接问题

使用Jekyll Exporter插件导出的md文档,在文件头,有个参数:permalink。它后面的内容,是WordPress中的永久链接相对格式。导入Hexo后,Hexo会将它替代:title作为永久链接。

这里面存在一个大问题

以我的Typecho博客为例。我的博客永久链接格式为/archives/slug.html。导入到WordPress后,为保持链接一致,在WordPress后台,将永久链接设置为/archives/%postname%.html。转入到Hexo,为避免出现问题,同样要保持链接一致。

这样,导出的md文档中,文件头的permalink参数后面写的便是/archives/slug.html(slug为手动设置的文章名字)。

问题出现了。编译好的文章链接是这样的:url.com/archives/archives/slug.html.html(url.com代表博客使用的域名)。

怎么办?逐个修改md文档的permalink显然不现实。

解决办法如下:

返回WordPress,修改固定链接格式为%postname%,保存。重新运行Export to Jekyll。此时,导出的md文档中,permalink参数后面写的便是/slug。重新导入Hexo,编译好以后,文章链接与之前使用WordPress或者typecho就是一致的了。

链接保证一致后,按照这篇文章这篇文章中关于评论导入disqus的部分进行操作,导入到disqus的评论链接可与博文产生一一对应的关系,评论就可以正常显示了。如果使用Disqus PHP Api,也是能一一对应的。

临时演示站点:https://porkbun.store

相关文章: