【问题标题】:Generated links broken in Hugo/Blogdown when publishing to domain with subfolder使用子文件夹发布到域时生成的链接在 Hugo/Blogdown 中断开
【发布时间】:2019-08-16 00:50:30
【问题描述】:

我正在尝试使用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 中将其吐出两次 :(

【问题讨论】:

  • 正如你所说,我还在为 baseURL 是带有子文件夹的域的站点错误地生成 url。我注意到很多像你这样的帖子。我在 hugo GitHub 存储库 github.com/gohugoio/hugo/issues/7714 提出了一个问题。

标签: rstudio r-markdown hugo blogdown


【解决方案1】:

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

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

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

【讨论】:

  • 我想这也适用于我在问题 II 中提到的 markdown 中的链接,对吧?我将尝试将它们从:/post/ 更改为 post/
  • 它有效。是的,他们改变了这样的行为确实很奇怪……这是一个重大的改变。我会为你的主题创建一个 PR 来修复链接 :) 谢谢你总是那么乐于助人!!!!!
猜你喜欢
  • 2020-07-22
  • 2015-09-23
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
相关资源
最近更新 更多