解决修改Hexo标签名大小写引起的页面404错误

起因

这,是风平浪静的一天。被联通限制住上传带宽的我在漫长的视频上传过程中,无意间瞄了一眼邮箱。

“新原因导致网站 zerokami.cn 上的网页无法被编入索引”

刷的一下啊,我就蹦起来了,赶紧登上Google Search Console查看具体信息。

img

仔细一看啊,不就是404吗。网页的删除,网址的更改,不都会导致这些问题吗?

但是当我仔细查看实例列表就发现了一些不对劲。第一个网址就是Hexo的标签页面,仔细一想,这个标签我也没有动过,也没有修改过,那为什么404了呢?

img

抱着好奇,我打开了这个页面,直接就404了。看来Google是没有误报的。

调查问题

既然发布后出现了问题,那么我首先想到的就是在本地查看这个页面能否正常访问。

本地调试

首先就是直接使用本地运行的命令:hexo s

1
2
3
4
PS D:\ZEROKAMI> hexo s
INFO Validating config
INFO Start processing
INFO Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.

很快啊,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/Hexo/

hello
https://zerokami.cn/tags/hello/

XyZ
https://zerokami.cn/tags/XyZ/

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标签。

小总结

经过一些列排查后,可以总结出一下规律:

问题解决

对所有Blender标签的文章进行检查,查看是否全部修改。

问题依旧

在进行修改发布后,问题依旧出现。

为什么?

答案很简单,因为Windows的路径不区分大小写,在不清理生成的文件情况下,生成的Blender文件夹覆盖原有的blender文件夹会保留blender文件夹的名称。因此在提交后Github上仍然为blender。

彻底解决

如何解决这个问题,很简单。

删除掉Hexo目录下的”.deploy_git“和”public“文件夹,然后重新生成提交即可。