使用 Hakyll 重定向旧 URL(和子域)

Redirect old URLs (and subdomains) with Hakyll

我正在尝试将我的网站从 Blogger 迁移到 Hakyll(然后我将其部署到 Github 页面),但我不希望所有旧链接都断开。另外,我的旧帖子都在 blog.domain.com/ 中,而现在它们将在域中。com/posts/。更重要的是,Blogger 中的 URL 仅包括月份和年份,而在 Hakyll 中它们还包括日期,这意味着我几乎肯定必须手动执行操作。快速 Google 搜索没有找到答案,而且我对如何编写网站的知识不足以解决我自己的问题。

我尝试从

重定向的格式示例
blog.domain.com/2015/09/title.html

我想将映射到

domain.com/posts/2015-09-08-title.html

编辑:I found something that ought to work, but doesn't。完全按照示例文件中的方式设置重定向后,出现以下两个错误之一:

1) unexpected character \n

2) expected ListField but got StringField

解决这个问题需要一些不同的技巧。

其中一部分可能是特定于 NameCheap 的,但我所要做的就是设置从 blog.domain.com 到 domain.com 的重定向,如 this tutorial.

另一部分是让 Hakyll 为路由做正确的事情。在处理了 gsubRoutes 函数的一个特性之后,结果证明这相当简单(代码 here)。