关于hexo部署到gitee时图片无法加载问题的完美解决
一、问题
使用hexo部署静态网站或博客时,经常会有一个问题:明明导入了图片以及其他的js文件以及css文件,也成功部署了网站,但访问时,无论是图片还是样式就是加载不出来??!!
这篇文章记录了我发现问题,并一步一步排除问题的过程。若不想听我絮絮叨debug过程,想直接解决问题,可直接跳到总结即可。
二、问题查找
前段时间在github上部署的时候也出现过图片样式不加载的问题,当时查找出来的问题是_config.yml文件中的url和root错误,修改完后还在csdn社区发帖子记录了这个问题以及解决方案。
万万没想到,才没过几天,我又遇到了css样式无法加载的这个问题。由于github访问速度实在受不了,所以这次我是想部署到gitee上,没想到又遇到这个问题,我第一反应是几天前的那个问题,但我检查后发现并没有修改,url和root都和在github部署时一样,
那是什么原因导致的呢?我带着这个疑问,看了网上其他的一些博主的解决方案,试了好几个还是无法解决样式不加载的问题,最后我看到了一篇文章中提到的一个观点,让我突然醍醐灌顶:在hexo g 渲染命令执行后,生成的public文件夹中的index.html文件中的路径不匹配资源或拼接的路径有误,我立马就去hexo g查看了我的public下的index.html中的资源路径引用,果然发现了问题
这路径,一看就不合法呀,”/./“是什么鬼?! 所以我立马就定位到是我引入图片资源时配置的路径的问题,然后我将主题配置文件中所有的./都修改为/ 。如下:
这样再hexo g编译时生成的资源路径拼接就正确了,如下:
解决了路径问题后我立马开启hexo三件套hexo clean 、hexo g 、 hexo d 上传、重部署、刷新!结果。。。还是css样式不加载。。。我人傻了,懵了好一整子,痛定思痛,决定再细细走一边这个路径问题,在我鼠标跟着大脑逻辑一阵跳转后,终于发现:还是路径问题,只不过这个路径问题是仓库路径根路径问题
原先我的url和root是这样的:
但事实上,这里的url是要填写最终网站部署的url,而root根路径就是代表仓库本身,而hexo g 是直接把各种静态资源放在了重渲染后生成的public文件夹,并且hexo d上传时也只上传public文件夹中的资源,所以root这里不需要加任何东西,如下:
然后,三件套重部署后,刷新!噫!成了!!!css等样式都正常加载,其他资源也能正常访问! 完美解决!
三、总结
1、修改_config.yml文件中的url和root
如图:
其中url为自己最终部署的网站地址,gitee上为pages页中的以下路径:
2、检查资源路径问题
查看hexo g后的public文件夹中的index.html文件中的静态资源引用,url拼接是否正确,若不正确或有明显拼接错误的,在资源引用处修改,这里每个人的情况不一样,就不上图了,只要注意一点:“ url + root + 资源引入 ” 这三个拼接起来要等于你要引入的静态资源在上传gitee后的仓库中的资源路径。