起因
今天写了一篇博客,然后更新到github上就不展示了,整个页面的框架还在,但是就是文章不展示,在经过一番折腾之后,我终于又让自己的博客回复正常了,这里分享下我是如何解决的。
先说明环境,我使用的是hexo的next主题,而且我是眼睁睁的看着,我发布文章之后,旧的页面是好的,一刷新是坏的,我想到了是不是自己发布坏了,但是我在本地启动hexo server
没有任何问题,然后我又试着hexo clean
后发布,依旧没什么用。
我看了下自己主页的源码,发现了一个问题,就是
1 | <link rel="stylesheet" type="text/css" href="/vendors/fancybox/source/jquery.fancybox.css?v=2.1.5"/> |
这条连接点不进去了,出现了github page 404的页面,然后我去自己的github看了一下,这个路径有的。
定位问题
可以确认博客不展示就是因为和这个css有关。
之后我又去网上搜了其它一些人的博客,同样的hexo, 同样的next,页面展示都正常,然后我去看了他们github的网站项目,跟我的路径一模一样,简直是见了鬼。
之后我试着看看能不能通过博客地址访问到别的静态文件,我发现只有vendors文件夹下的文件不能展示,其它目录下的静态文件都能展示。
之后我想到,可能github对这个文件夹做了某些限制,然后我决定给这个文件夹换个名字。
解决方案
我把这个文件夹从vendors更名为lib,你想换什么看你喜好,反正别是vendor,因为我试了,也不行。
首先你需需要在你的themes文件夹下搜索vendors关键字,然后把如下几行替换,下面的代码是用来从themes生成网站的。
1 | C:\Users\UPC\Documents\hexo\themes\next\.bowerrc: |
1 | C:\Users\UPC\Documents\hexo\themes\next\.bowerrc: |
然后你要把themes下的vendors文件夹,重命名为lib
然后你需要hexo clean
,删除掉之前生成的项目。
之后你再hexo generate
重新生成,如果没问题的话,你会在public文件夹下,看见一个lib文件夹。
之后你再发布你的博客,一切就又恢复正常了,看下网页源代码,这个时候,css的路径变为:
1 | <link rel="stylesheet" type="text/css" href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5"/> |
原因
后来我才知道什么原因,原来github把jekyll升级到了3.3,[What’s new in GitHub Pages with Jekyll 3.3]](https://github.com/blog/2277-what-s-new-in-github-pages-with-jekyll-3-3)
这个版本会忽略vendor文件夹,这也就是为什么,我本地起是ok的,放到github就不行了,我也明白了,为什么有的人的hexo的博客是好的,因为他们还没更新,只要更新一重启就坏了。