起因
这,是风平浪静的一天。被联通限制住上传带宽的我在漫长的视频上传过程中,无意间瞄了一眼邮箱。
“新原因导致网站 zerokami.cn 上的网页无法被编入索引”
刷的一下啊,我就蹦起来了,赶紧登上Google Search Console查看具体信息。
仔细一看啊,不就是404吗。网页的删除,网址的更改,不都会导致这些问题吗?
但是当我仔细查看实例列表就发现了一些不对劲。第一个网址就是Hexo的标签页面,仔细一想,这个标签我也没有动过,也没有修改过,那为什么404了呢?
抱着好奇,我打开了这个页面,直接就404了。看来Google是没有误报的。
调查问题
既然发布后出现了问题,那么我首先想到的就是在本地查看这个页面能否正常访问。
本地调试
首先就是直接使用本地运行的命令:hexo s
1 | PS D:\ZEROKAMI> hexo s |
很快啊,Hexo就正常运行了,访问了本地运行的Blender标签页面,发现是可以正常使用的,且终端上没有任何的报错。
那这就有点糊涂了,怎么本地可以运行的,发布到GitHub就不行了呢?
继续摸索
很快啊,我继续回到了Google Search Console上,一下子就发现了之前没发现的问题——Blender标签页和blender标签页地址。
首先,我们看一下报404页面错误的标签页地址:https://zerokami.cn/tags/Blender/
它在Google Search Console上的抓取时间是4月23日,而Blender标签页在此时间之前就已经存在,那么只有一种可能,那就是那段时间我对Blender标签做了什么?
仔细回想了一下,那就是修改了Blender标签的文章,其中的改动就涉及到了Blender标签。改动是将blender标签修改成Blender标签。
通过这里,很快就有了新的思路。
Hexo标签
需要知道啊,Hexo的标签名是什么,那么Hexo的标签地址就是一样的。
例如:
Hexo标签名的大小写也会体现在地址中。
那么,是否是修改了标签名导致的问题呢?
问题复现
我通过 https://zerokami.cn/tags/blender/
是能够访问Blender标签页的。
在检查Hexo生成的文件和目录,我发现了tags目录下Blender标签页面的文件夹名称是blender,这与Hexo标签路径生成规则是不符合的。
修改标签名导致的问题?
那么是否是修改了标签名而导致的问题呢?直接新建一个,然后修改测试。
答案显然是不是这么简单的。
在修改了标签名后,会创建出一个新的标签页面,生成新的一个标签地址,与修改前的标签名称区分开来。因此,如果要对文章中的特定标签进行修改,还是挺麻烦的,需要对所有拥有此标签的文章都修改一遍,这样才能在不保留旧的标签的情况下修改标签名。
显然,这个与现在遇到的问题是不一样的,因为它并不会导致页面的404。
大小写问题
那么再次回到不一致的点上,即大小写。
一谈到大小写,我就是很快的想到了之前所总结的一点。
Windows与其它系统不一样,Windows不区分路径中的大小写。这就是为什么在本地运行Hexo,它并没有报404错误。
而面向Hexo的服务商所使用的服务器也不太可能使用Windows Server,基本都是Linux的发行版。了解Linux的都知道,它是区分路径中的大小写,且一个目录下是可以存在相同字母但大小写不一样的文件夹的,Windows却是相反。
修改不全
思考到这,既然是修改造成的,那我删除已经生成的文件,然后重新生成呢?
结果依旧是小写的blender文件夹。
那会不会有一种可能,那就是其它文章中保留了旧的英文标签名——blender,这样新的Blender标签就只能生成在blender文件夹中了呢?
很快啊,我就在《XYZの魔法 Miku MMD》中发现了blender标签,而其它地方则是Blender标签。
小总结
经过一些列排查后,可以总结出一下规律:
- 系统是Windows这种不区分大小写的,且同一路径下大小写文件夹不能共生。
- 标签是英文的。(只有英文会出现大小写问题)
- 标签修改前后英文字母相同,仅有大小写修改。
问题解决
对所有Blender标签的文章进行检查,查看是否全部修改。
问题依旧
在进行修改发布后,问题依旧出现。
为什么?
答案很简单,因为Windows的路径不区分大小写,在不清理生成的文件情况下,生成的Blender文件夹覆盖原有的blender文件夹会保留blender文件夹的名称。因此在提交后Github上仍然为blender。
彻底解决
如何解决这个问题,很简单。
删除掉Hexo目录下的”.deploy_git“和”public“文件夹,然后重新生成提交即可。