问题现象
原有文章只配置了 layout 和 title,发布后,可以按照 year/month/day/title 的链接格式访问,但增加配置 categories 和 tages 后,再次访问就提示 404 Not Found。
原因解析
这是因为 Jekyll 有一个 permalink(永久链接)的生成策略,默认策略为:
permalink: /:categories/:year/:month/:day/:title:output_ext
当 categories 不存在时,会忽略,因此我们可以按照 year/month/day/title 的链接格式访问到。而设置了 categories 后,链接就不是这个了,需要在链接前加上我们填写的 categories 才行。
解决方法
虽然我们找到了新页面的URL,但这种情况会导致原先的URL失效。
如果有人之前收藏了这篇文章,现在就无法访问了,这是一个更大的问题。
针对这种情况,我们可以修改 permalink 的默认设置,比如只按year/month/day/title来生成链接。
可以在根目录的 _config.yml 文件中添加如下语句:
permalink: /:year/:month/:day/:title
这样设置,不论文章有没有 categories ,生成的URL都与之无关,可以保证URL不会发生变化。