HEXO的站内链接和永久链接

文章更新

  1. 20160616-文章第一稿

为什么会有这篇文章

最近写了不少的东西,本来很多文章都是把很多章节连在一起放在一个帖子里,但是还是有一些内容要分开写,所以,当想把这些文章总结起来,放在文章末尾做成一个系列的时候,不免要涉及到HEXO站内链接的问题,所以研究下HEXO的链接方式还是很有必要的。

先上几个参考文章吧。

  1. Front-matter
  2. 永久链接
  3. 怎么样搭建HEXO站内链接
  4. HEXO CHANGE URL

其实大家不用看了,也没啥难懂的,我就随便说说。

具体步骤

主要就是要修改2个地方。

为Front-matter区域添加更多变量

Front-matter 区域就是一篇Markdown文章开始的那几行,被 --- 包裹的那3行,比如下面这样的。

---包裹的区域就是front-matter

可以看到,我这里除了 titledate 以及 tags 外,自己添加了一个新的变量 urlname ,这个新的变量用来保存每个文章的英文名字,这样一来可以有利于SEO,二来可以缩短博客文章URL的层数。

默认情况下,hexo博客部署之后的链接形式是这样的 http://yourwebip.com/year/month/day/文章名字/index.html ,而我希望缩减成 http://www.ip.com/post/urlname

修改_config.yml

permalink 参数下,可以修改HEXO博客默认的URL样式,原来默认是 :year/:month/:day/:title/ ,我修改为 post/:urlname/

yml 文件配置改为 permalink: post/:urlname,有的人会觉得我把这么多文章都放在一个post下不会很乱呢?

首先,几天写一个帖子,一年也就是100篇,10年也就1000篇,你觉得1000个文件或者目录,对百度或者google算是问题么?就算他们觉得多了,你真能坚持10年么?

其次,有的帖子里,加上了 :category/:urlname/ 的形式,我没有这样做,一来是我觉得在 public 目录下那么多分类的目录,本身我就觉得乱,二来,我的MD文件,在执行 hexo new 的时候,就会写上日期,比如这样 hexo new 20160616-新文章,然后我在用 sublime 打开这个文件进行编辑的时候,会把title中的 20160616- 去掉,这样帖子展示在读者面前的时候,标题就不会还带着个日期了,三来,我就算去掉了 title 中的日期信息,但是不会修改md文件本身的名字,所以,在 _post 目录下,我的文章还是这个样子的。

post目录下的文件命名样式

这样的目录,首先文件的排列是按照时间顺序,我可以了解我每个文章大概什么时间写的,而且就算是文章经过了多次修改,依然可以知道文章第一次的生成时间。其次,每个MD文件在 new 的时候,同时会建立一个和文件名字相同的目录,这样,我可以把每个帖子里的图片,直接扔到这个目录里面去,然后在文章里想插入图片的时候,就可以用下面这样的语法来显示。

1
![post目录下的文件命名样式](files-in-post-dir.png)

怎么样?轻松加愉快吧。对了,这个功能需要插件的配合,差点忘记说了,名字叫 hexo-asset-image,具体可以看这篇文章《让Markdown的书写更加顺畅的技巧》,有详细介绍。

好了,经过的修改,hexo g 的时候,生成的文章url就非常清爽了,大家可以看下图感受一下。

新的生成文件

总结

经过这样的修改,我的这篇文章,最新的url就变成了 http://www.wuliaole.com/post/permalink_and_internal_link_in_hexo,可以被自己站内的其他文章方便地引用了,而且使用额外 front-matter 变量还有一个额外的好处,不会因为文章题目的变化而导致网页的永久链接变化,因为 urlname 是每次 hexo new 之后就订好的,不会轻易变化了,而中文的文件名却可以不受影响,可以随便改变,比如加个 xxx(2017年1月1日最新更新版) 的题目,或者像我这个文章,之前题目里的 永久链接 不小心打成了 用久链接,修改好了,但是英文名字不会变化,也就是url不会变化,这样一来,无论是对搜索引擎还是博客的作者都是大大的方便。

分享到