Github 页面切换到 Jekyll 3,我的链接坏了

Github Pages switched to Jekyll 3 and my links got broken

GitHub 截至 2016 年 4 月的页数 uses Jekyll 3.0。每当我推送提交时切换后,我都会收到 Page build failed. 电子邮件通知。

由于错误信息太少,我不得不联系 GitHub 支持。原来如果在_config.yaml中使用exclude,现在的内容必须放在括号里,例如:

exclude: [excludethis]

此外,Redcarpet 和 Pygments 不再可用,因此必须在 _config.yaml 中用 kramdown 和 rouge 替换它们:

markdown: kramdown
highlighter: rouge

现在默认情况下 posts(posts 和 date 在未来)不会发布。因此,如果您的 post 中有 date: 2016-04-25 09:30:00,现在您所在的地方是 10:00,但您在亚洲并且服务器在美国,那么这个 post 被认为是未来并没有发表。在 _config.yml 中设置 timezone 没有帮助(错误?)。您必须像这样向日期添加偏移量:

date: 2016-04-25 09:30:00 +0700

经过这些更改后,提交推送不再产生错误。但是我遇到了另一个错误,我所有的链接都坏了,posts 的所有旧 URL 都返回了 404。

我该如何解决这个问题?

事实证明,Jekyll 3 posts 不再以斜杠结尾。

之前我在 _config.yaml 中将 post 的 URL 设置为这样:

permalink: /article/:title

示例 URL 为:http://mysite/article/apost/

在 Jekyll 3 中找不到这个 URL (404)。但是我可以用 http://mysite/article/apost.

得到它

所以如果你想保持旧的 URLs,永久链接需要修改为有尾部斜杠:

permalink: /article/:title/

并且指向 post 的链接需要修改以删除结尾的斜杠。例如,如果以前你有:

<a href="{{post.url}}/">

需要修改为:

<a href="{{post.url}}">

这解决了 post 秒的问题。非 post 页面有不同的问题。以前如果你在 root 中有例如 about.md,Jekyll 会将它转换为 http://mysite/about.html. Jekyll 3 will not append .html at the end, it would become http://mysite/about.

如果您想保留旧的 URL,您可以在 每个 页面的 'front matter' 添加固定链接:

---
permalink: /about.html
---