发布到具有子文件夹的域时生成的链接在 Hugo/Blogdown 中损坏

Generated links broken in Hugo/Blogdown when publishing to domain with subfolder

我正在尝试使用 Hugo Xmin 创建静态站点。我的站点将托管在我存储库的 gh-pages 中,因此最终的 URL 将如下所示:

https://myuser.github.io/myrepo/

注意在我目前的阶段,我还没有修改示例站点中随主题一起出现的任何文件,所以基本上我正在部署的站点完全相同在原始存储库中。

问题一

在我的config.toml中我设置了:

baseurl = "https://myuser.github.io/myrepo/"

因为 baseurl = "/" 我指向 <head> 中的静态 CSS 文件的链接不起作用,网站看起来很乱。通过指定基础 url,CSS 可以很好地加载,但是顶部栏链接会被破坏,因为这是生成的:

<li>
  <a href="/myproj/myproj/about/">About</a>
</li>

为什么生成的 URL 看起来很奇怪?存储库名称重复。

问题二

主题示例站点,在 /content/_index.Rmarkdown 末尾有几个链接:

You can also visit the list page of a single section, e.g., [posts](/post/), or [notes](/note/). See the [About](/about/) page for more info.

这些在我的情况下不起作用,因为生成的 URL 是:

<a href="/post/">posts</a>

这会将用户重定向到:https://myuser.github.io/post/ 这是错误的。当托管域有子文件夹时,基本上这个主题不起作用。或者我在这里遗漏了什么?


疑难解答

通过稍微调查一下,我可以看到主题定义了如下链接:

<ul class="menu">
  {{ range .Site.Menus.main }}
  <li><a href="{{ .URL | relURL }}">{{ .Name }}</a></li>
  {{ end }}
</ul>

函数 relURL 获取主机名后的内容并在生成的 URL 中将其吐出两次 :(

relURL 的行为似乎自某个版本的 Hugo(我不知道是哪个)以来发生了变化。无论如何,您可以删除这些菜单项中的前导斜线,例如 change

[[menu.main]]
    name = "About"
    url = "/about/"

[[menu.main]]
    name = "About"
    url = "about/"