hexo-abbrlink生成的文章链接undefind.html问题解决
使用Hexo博客的过程中,为了生成简洁且唯一链接不变的URL链接,我使用了hexo-abbrlink插件:
npm install hexo-abbrlink --save |
然后再Hexo根目录下_config.yml里增加如下配置:
# 修改原链接格式:permalink: :year/:month/:day/:title/ |
然后执行hexo clean & hexo g & hexo s
,打开博客就会看到博客文章的html名称都变成了一串随机数。再去打开文章的md文件,文件头都增加了一行类似abbrlink: e89dcf68
,这个abbrlink的值就是hexo-abbrlink插件给文章生成的唯一ID了。这个字段确保了在我们修改了Front-matter 内的博客标题title或创建日期date字段之后而不会改变链接地址,相当于每篇文章有了专属链接了,这样找搜索引擎收录也简单多了。
给文章生成永久链接原本是比较顺利的,但是几天之后新生成的文章链接居然变成了undefind.html,md文件里也没生成abbrlink,执行hexo clean & hexo g
也没啥用。
去Google了一番这个问题,总结以下产生该问题的原因:
1.文章的链接变成了undefined.html,新的文章没问题,老的文章就不行了。首先要执行hexo clean 清楚掉以前生成的文章缓存,然后hexo g重新生成静态文件就ok了。
ps:hexo clean & hexo g
多次还是无效,我这是老文章没问题,新文章不行。
2.如果全部文章的链接都有问题或者没有任何规律,总有一部分文章链接是undefined。建议检查一下文章开头的Front-matter,文章的Front-matter中不能设置layout,将layout属性删掉后就可以正常使用了。
ps:检查了md文件中并没有layout,再次无效。
3.与hexo-auto-category插件冲突。这2款插件都是读写 Front-matter 的数据。如果同时启用这2个插件,会导致hexo-abbrlink这个插件无法向 md 文件里写入 abbrlink 属性。
据hexo-abbrlink插件作者的说法,此问题无法修复,两个插件只能选其一。
abbrlink: |
ps:我这里并没有使用hexo-auto-category插件,依旧无效。
试遍了诸般办法,没能解决问题,心血来潮去看了眼Hexo的扩展包文件package.json……纳尼?居然没有hexo-abbrlink……好吧,我这才想起来,昨天把Hexo给换了个目录,装了一大堆插件,hexo-abbrlink忘记装了。
所以,第4点原因:
4.检查package.json,查看有没有安装hexo-abbrlink插件(比如我这样更换Hexo文件夹的情况)。
安装和使用Hexo,请参考Hexo博客搭建指南。