前情提要

你在我的博客中某个文章页面刷新,你就会发现报错“404”,但这种情况在原版Hexo是不会出现的,问题在于我用的主题。

问题

我所用的主题Hexo Aurora Docs | Hexo Aurora Docs是使用VUE开发的,众所不周知VUE是著名的渐进式单页面应用开发框架,但就是因为这个原因导致的在GitHub-Pages中产生“404”问题。

VUE的路由与页面的关系可以理解成很多很多组件的调用,但是实际上这个路由并没有像网址一样,虽然都是指向了一个页面,但是网址是通过发送新的网络请求来请求页面的。

而现在GitHub博客VUE单页面应用,实际的路由只是在内部调用组件而已,并没有产生向后端请求数据的网络请求,因为GitHub只是给你使用的静态页面,并没有地方让你部署后端,,况且GitHub博客大多数都是静态页。因此GitHub-Pages做不到对VUE的适配,它对这种路由处理方式依旧是按网络请求来的,但是网络上并没有与这个路由有关的数据页,所以自然而然就报错404了。

可以这么理解:

VUE路由:http://xxxx.xx/post/{post_name}(内部组件调用组装的)

网址页面:http://xxxx.xx/post/post_name(后端处理网络请求,然后返回前端页面与相关数据)

解决方法

方法一:VUE-Router路由模式

目前我是没有找到好的解决方法,网上有说与VUE的路由模式(Hash/History)有关的,但我在主题源工程文件更改模式后重新打包部署,依旧没有解决问题【也可能是我操作方式不对】,等有时间了再研究研究这种解决方法吧

方法二:404页面“重定向”

这个方法是自定义404页面,默认是GitHub的404页面,当你在站点根目录下创建名为“404.html”文件后,这个文件就是404页面了。

但为了避免GitHub-404页面失去对的博客操作,你可以:

  1. 自定义404页面,添加博客主页的跳转链接

  2. 复制一份站点根目录的”index.html“文件,重命名为:“404.html”(该方法为自动重定向博客首页的方法,如需要自定义404页面内容,请使用上一条方法)

方法三:不使用VUE开发的框架

从根源上解决问题,对吧

END