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
---
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
---